Reputation: 532
I would like to declare some environment variables in a top level env section in my main.yml whose values use some pre-defined environment variables such as those documented in the GitHub Actions documentation. However, it appears I cannot use those pre-defined variables in the right hand side of my env section. For example:
env:
resourceGroup: ${GITHUB_RUN_ID}${GITHUB_RUN_NUMBER}
Is there a way to make it so any step that needs ${resourceGroup} can get it without having to manually define it within each step?
Upvotes: 13
Views: 14600
Reputation: 532
It looks like set-env works as well: https://help.github.com/en/actions/reference/development-tools-for-github-actions#set-an-environment-variable-set-env
Upvotes: 0
Reputation: 4877
Yes, you can. I built a GitHub Action that will do it for you: Add Env vars.
Use it as the first step in a job in your workflow, and pass in JSON-stringified env vars as the map
parameter. They need to be set for each job - they will only be set for all subsequent steps in a job.
Here is your test case, using the 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 }}
Upvotes: 0
Reputation: 4192
I tried the following two ways.
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 }}
In both cases, the results were obtained correctly.
However, in the case of env as a result, the former has not yet been evaluated. Maybe you can use the latter.
Upvotes: 34