在 Argo 中格式化日期

Formatting dates in Argo

为了在 Argo 中获得像 20201008 这样的日期,在模板中格式化日期的最佳方式是什么?

这似乎可行,但相当冗长,并且为 "%Y-%m-%dT%H:%M:%SZ" 之类的内容创建字符串会让其他人难以阅读。

 "{{workflow.creationTimestamp.Y}}{{workflow.creationTimestamp.m}}{{workflow.creationTimestamp.d}}"

我认为这些是相关文档:https://github.com/argoproj/argo/blob/master/docs/variables.md。我尝试了 "{{workflow.creationTimestamp.Ymd}}" 但没有成功。

不幸的是,没有办法(在模板内部)使它更简洁。

有一个 hard-coded list of supported time format characters. For each character in that list, a global parameter is populated,以及基础 workflow.creationTimestamp 变量。 workflow.creationTimestamp..

后的字符没有动态读取或处理

由于模板基于 Jinja2,因此 discussion 提供了更强大的字符串模板支持。但各种复杂情况使讨论停滞不前。 (Argo 团队使用“竖起大拇指”计数来确定问题的优先级,因此可能有助于解决该问题。)

我相信你已经想到了这一点,但为了完整起见:如果你在 pod 中使用变量,你可以发送完整的 workflow.creationTimestamp 并进行一些运行时操作以获得你想要的格式。

最后,您可以submit an issue请求该功能。即使他们决定不实施它,该示例也会使关于 Jinja2 模板的讨论对开发人员来说更加具体。

从 Argo 3.1 开始,支持一些模板,因此现在可以使用:

"{{=sprig.date('20060102', workflow.creationTimestamp)}}"