GitHub上的动作:env:在env部分的RHS上使用预定义的环境变量

时间:2020-02-21 22:44:25

标签: github-actions

我想在 main.yml 的顶级 env 部分中声明一些环境变量,其值使用一些预定义的环境变量,例如记录在案的{ {3}}。但是,看来我不能在我的env部分的右侧使用这些预定义的变量。例如:

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

有没有一种方法可以使需要$ {resourceGroup}的任何步骤都可以获取它,而不必在每个步骤中手动定义它?

3 个答案:

答案 0 :(得分:7)

我尝试了以下两种方法。

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

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

enter image description here

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

enter image description here

答案 1 :(得分:1)

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

将其用作工作流程中的第一步,并将JSON字符串化的env vars作为map参数传入。需要为每个作业设置它们-仅为作业中的所有后续步骤设置它们。

这是使用添加环境变量的测试用例:

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

答案 2 :(得分:0)