我想在我的main.yml文件的顶层env部分声明一些环境变量,这些变量的值使用了一些预定义环境变量,例如在GitHub Actions文档中记录的变量。但是,似乎我不能在env部分的右侧使用那些预定义变量。例如:
env:
resourceGroup: ${GITHUB_RUN_ID}${GITHUB_RUN_NUMBER}
有没有办法使任何需要 ${resourceGroup} 的步骤都能够在不必在每个步骤中手动定义它的情况下获得它?
我想在我的main.yml文件的顶层env部分声明一些环境变量,这些变量的值使用了一些预定义环境变量,例如在GitHub Actions文档中记录的变量。但是,似乎我不能在env部分的右侧使用那些预定义变量。例如:
env:
resourceGroup: ${GITHUB_RUN_ID}${GITHUB_RUN_NUMBER}
有没有办法使任何需要 ${resourceGroup} 的步骤都能够在不必在每个步骤中手动定义它的情况下获得它?
我尝试了以下两种方法。
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情况下,前者尚未被评估。也许您可以使用后者。
可以的。我创建了一个 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 }}