yaml - 在 GitHub 操作中使用日期作为 ENV 变量
问题描述
这是一个非常有趣但非常令人沮丧的问题。我正在使用一个 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 解析器将值视为字符串。
解决方案
令人惊讶的是,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 }}
这应该可以解决问题。
推荐阅读
- python-3.x - 如何按键对字典进行排序?
- jquery - 如何在 jQuery 中为以下 HTML 删除 Div 和 Content
- android - 回收站视图中的项目重叠
- eclipse - 有没有办法在 Project Explorer 上添加扩展来创建新的向导项目?
- jenkins - 将 Dockerfile 中的 EXPOSE 参数作为用户输入传递
- mysql - Docker、Springboot 和 Mysql:com.mysql.cj.exceptions.CJCommunicationsException:通信链路故障
- c# - 列表视图\数据库\组合框,c#
- multidimensional-array - 如何过滤掉 ndarray 中的特定列?
- php - 发布帖子时如何发送电子邮件?
- angular - Ngrx 商店 - 发出动作后延迟点击