【问题标题】:Using date as an ENV variable in GitHub action在 GitHub 操作中使用日期作为 ENV 变量
【发布时间】:2020-11-02 12:44:37
【问题描述】:

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

示例: .github/workflows/rust.yaml

env:
        MY_DATE: '2020-10-07T12:00:00+01:00'
run: echo $MY_DATE

结果(GH 操作 UI):

env:
    TMOU_GAME_END: 10/07/2020 11:00:00

10/07/2020 11:00:00

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

我尝试过但没有用的方法:

  • 不使用引号、单引号 (')、双引号 (")
  • 将另一个 ENV 变量 LC_TIME 设置为 en_DK.UTF-8
  • 使用 !!str 速记(参见https://yaml.org/spec/1.2/spec.html,示例 2.23 部分。各种显式标记);这个失败要么The 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'

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

【问题讨论】:

    标签: yaml github-actions


    【解决方案1】:

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

    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 }}
    

    这应该可以解决问题。

    【讨论】:

    • 谢谢 Marcin,这正是我所需要的。
    猜你喜欢
    • 2022-12-16
    • 2021-05-21
    • 2021-12-01
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 2021-02-16
    • 1970-01-01
    相关资源
    最近更新 更多