在 GitHub 操作中使用日期作为 ENV 变量

mii*_*ila 5 yaml github-actions

这是一个非常有趣但非常令人沮丧的问题。我正在使用 ENV 变量,它指定日期。我提供了一个符合 ISO 8601 的版本,并在应用程序中检索它并进行解析。当我在 GH 操作工作流程中指定它时,它会被解析为日期(而不是字符串)并格式化。因此,我的应用程序解析失败。

\n

示例:\n.github/workflows/rust.yaml

\n
env:\n        MY_DATE: \'2020-10-07T12:00:00+01:00\'\nrun: echo $MY_DATE\n
Run Code Online (Sandbox Code Playgroud)\n

结果(GH 操作 UI):

\n
env:\n    TMOU_GAME_END: 10/07/2020 11:00:00\n\n10/07/2020 11:00:00\n
Run Code Online (Sandbox Code Playgroud)\n

它特定于 GitHub 操作及其 yaml 解析,它可以在 Heroku、各种本地设置等上正常工作。

\n

我尝试过但不起作用的事情:

\n
    \n
  • 不使用引号、单引号 (\')、双引号 (")
  • \n
  • 设置另一个 ENV 变量 LC_TIME 为 en_DK.UTF-8
  • \n
  • 使用 !!str 简写(参见https://yaml.org/spec/1.2/spec.html,示例 2.23. 各种显式标签部分);这个失败要么是 \xc2\xa0The workflow is not valid. .github/workflows/rust.yml: Unexpected tag \'tag:yaml.org,2002:str\'要么是The workflow is not valid. .github/workflows/rust.yml: The scalar style \'DoubleQuoted | SingleQuoted\' on line 29 and column 24 is not valid with the tag \'tag:yaml.org,2002:str\'
  • \n
\n

有什么帮助吗?我可以打开任何秘密参数吗?有转义序列吗?我只是想让 GH Actions yaml 解析器将值视为字符串。

\n

Mar*_*tek 14

令人惊讶的是,GitHub Actions 工作流程 YAML 解析器似乎没有完全实现该标准,并且使用显式类型(如!!str)不起作用。但是,您可以通过将环境变量设置为所需值(不在 YAML 文件本身中,而是在工作流执行期间使用专用工作流命令动态设置)来解决此问题:

steps:
  - name: Dynamically set MY_DATE environment variable
    run: echo "MY_DATE=2020-10-07T12:00:00+01:00" >> $GITHUB_ENV
  - name: Test MY_DATE variable
    run: echo ${{ env.MY_DATE }}
Run Code Online (Sandbox Code Playgroud)

这应该可以解决问题。