5

我想在我的main.yml的顶级env部分中声明一些环境变量,其值使用一些预定义的环境变量,例如GitHub Actions 文档中记录的那些。但是,似乎我无法在 env 部分的右侧使用这些预定义变量。例如:

env:
  resourceGroup: ${GITHUB_RUN_ID}${GITHUB_RUN_NUMBER}

有没有办法让它需要 ${resourceGroup} 的任何步骤都可以得到它,而不必在每个步骤中手动定义它?

4

3 回答 3

23

我尝试了以下两种方法。

env:
  resourceGroup1: ${GITHUB_RUN_ID}-${GITHUB_RUN_NUMBER}
  resourceGroup2: ${{ github.run_id }}-${{ github.run_number }}

jobs:
  foo:
    runs-on: ubuntu-latest
    steps:
      - name: test1
        run: echo ${{ env.resourceGroup1 }}
      - name: test2
        run: echo ${{ env.resourceGroup2 }}

在这两种情况下,结果都是正确的。

在此处输入图像描述

但是,在结果为 env 的情况下,尚未对前者进行评估。也许你可以使用后者。

在此处输入图像描述

于 2020-02-22T02:18:50.820 回答
0

是的你可以。我构建了一个 GitHub Action 来为你做这件事:Add Env vars

将其用作工作流程中作业的第一步,并将 JSON 字符串化的环境变量作为map参数传递。需要为每个作业设置它们 - 它们只会为作业中的所有后续步骤设置。

这是您的测试用例,使用 Add Env vars:

  test:  
    runs-on: ubuntu-latest
    steps:
      - name: Setup env
        uses: jwulf/add-env-vars-action@master
        with:
          map: '{"resourceGroup1": "${{ github.run_id }}-${{ github.run_number }}", "resourceGroup2": "${{ github.run_id }}-${{ github.run_number }}"}'   
      - name: test1
        run: echo ${{ env.resourceGroup1 }}
      - name: test2
        run: echo ${{ env.resourceGroup2 }}
于 2020-02-22T16:53:50.377 回答
0

看起来 set-env 也可以:https ://help.github.com/en/actions/reference/development-tools-for-github-actions#set-an-environment-variable-set-env

于 2020-02-26T23:00:28.773 回答