GitHub操作使用shell中的变量集

chhkpiq4  于 2023-05-18  发布在  Shell
关注(0)|答案(1)|浏览(174)

目标:
在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}"

如何让它工作?

lawou6xi

lawou6xi1#

如果您想在参数中引用使用$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由shell* 展开,shell * 查找名为today的环境变量。你也可以这样写:

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

在这种情况下,扩展将在run命令执行之前由github的工作流引擎执行,因此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限定),并且它们不会显示在任务启动的进程环境中。

相关问题