GitHub操作以使用从shell设置的变量



目标:

在GitHub Actions中,从shell动态定义我的提交消息:

- name: Commit changes
uses: EndBug/add-and-commit@v7
with:
message: "added on $(date -I)"

然而,我似乎必须定义一个环境变量然后使用它?和其他类似的帮助文件,但仍然无法说明如何使用我之前定义的环境变量。这是我尝试但失败的:

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

如何使其发挥作用?

如果要使用参数中的$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被外壳展开,其查找名为CCD_ 4的环境变量。你也可以写入:

- name: Show an environment variable
run: |
echo "today is ${{env.today}}"

在这种情况下,扩展将由github的工作流执行在run命令执行之前的engine,因此shell将看到看起来像echo "today is 2021-07-14"的文字命令。


您可以使用输出参数完成类似的操作,例如:

- 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限定(,并且它们不会出现在环境中由您的任务启动的进程。

最新更新