GitHub Actions 使用从 shell 设置的变量
Posted
技术标签:
【中文标题】GitHub Actions 使用从 shell 设置的变量【英文标题】:GitHub Actions to use variables set from shell 【发布时间】:2021-09-23 15:26:12 【问题描述】:目标:
在 GitHub Actions 中,从 shell 动态定义我的提交消息:
- name: Commit changes
uses: EndBug/add-and-commit@v7
with:
message: "added on $(date -I)"
但是,我似乎必须定义一个环境变量然后使用它。我正在关注How do I set an env var with a bash expression in GitHub Actions? 和其他帮助文件,如this,但仍然不知道如何使用我之前定义的这种环境变量。这是我尝试但失败的方法:
- name: Checkout repo
uses: actions/checkout@v2
- run: |
touch sample.js
echo "today=$(date -I)" >> $GITHUB_ENV
- name: Commit changes
uses: EndBug/add-and-commit@v7
with:
message: "added on $today"
如何让它发挥作用?
【问题讨论】:
【参考方案1】:如果您想在另一个任务的参数中引用使用$GITHUB_ENV
环境文件设置的环境变量,您需要使用工作流语法来访问***env
键的相应键,如下所示:
- name: Commit changes
uses: EndBug/add-and-commit@v7
with:
message: "added on $env.today"
您可以从正在运行的任务内部将其作为标准环境访问,例如:
- name: Show an environment variable
run: |
echo "today is $today"
在该示例中,表达式 $today
由外壳扩展,
它查找名为today
的环境变量。你也可以
写:
- name: Show an environment variable
run: |
echo "today is $env.today"
在这种情况下,扩展将由 github 的工作流执行
引擎在run
命令执行之前,所以shell 会看到一个
类似于 echo "today is 2021-07-14"
的文字命令。
您可以使用output parameters 完成类似的操作,如下所示:
- name: "Set an output parameter"
id: set_today
run: |
echo "::set-output name=today::$(date -I)"
- name: Commit changes
uses: EndBug/add-and-commit@v7
with:
message: "added on $steps.set_today.outputs.today"
使用输出参数更细化(因为它们是 由步骤 id 限定),它们不会出现在环境中 由您的任务启动的进程数。
【讨论】:
工藤!回答了我想问但不知道它们存在的问题。以上是关于GitHub Actions 使用从 shell 设置的变量的主要内容,如果未能解决你的问题,请参考以下文章
使用 GitHub Actions 从私有 GitHub 存储库安装 npm 模块
无法从 GitHub Actions 从 GitHub Packages 拉取
将 Go 项目从 Travis 迁移至 GitHub Actions