Reputation: 289
I want to pass maven image version as as env variable but when i am trying to access that env.MAVEN_VERSION variable getting error
Error- The workflow is not valid. .github/workflows/Merge.yaml (Line: 13 image:) Unrecognized named-value: 'env'. Located at position 1 within expression: env.MAVEN_VERSION
Yaml File ---
on:
push:
branches: [ master ]
env:
MAVEN_VERSION: maven:3.8.6-jdk-11
jobs:
build:
runs-on: ubuntu-latest
container:
image: ${{ env.MAVEN_VERSION }}
steps:
- name: Env Variable
run: echo ${{ env.MAVEN_VERSION }}
Upvotes: 23
Views: 28091
Reputation: 4819
For anyone wondering. According to the official specs, context variables are only available in specific areas of the workflow definition.
env
is unavailable under jobs.<job_id>.with.<with_id>
Neither is available under jobs.<job_id>.secrets.<secrets_id>
Possible solutions are:
vars
secrets
inside jobs.<job_id>.secrets.<secrets_id>
Despite being counterintuitive I would assume there are sane security considerations behind this constraint and by using this workaround you may be exposing yourself to some potential risks.*
Upvotes: 0
Reputation: 565
While env
is not available, outputs from previous jobs are.
Consider the following example
on:
push:
branches: [ master ]
env:
MAVEN_VERSION: maven:3.8.6-jdk-11
jobs:
prepare-image:
runs-on: ubuntu-latest
steps:
- run: echo "null"
outputs:
image: ${{ env.MAVEN_VERSION }}
build:
runs-on: ubuntu-latest
needs: [prepare-image]
container:
image: ${{ needs.prepare-image.outputs.image }}
steps:
- name: Echo output
run: echo ${{ needs.prepare-image.outputs.image }}
Upvotes: 25
Reputation: 974
You have to set your environment variables before jobs:
name: Deploy to Github pages
'on':
push:
branches:
- main
env:
MAVEN_VERSION: maven:3.8.6-jdk-11
API_KEY: ${{secrets.API_KEY}}
...
jobs:
deploy:
...
If you want to add secret from Github actions then go to the following route on github and set your secrets,
Github > Your project > Settings > Secrets and variables > actions
Go to the Actions and click on New repository secret
to set an environment variable.
Upvotes: 2
Reputation: 5053
when i am trying to access that...
That's not what the error is telling you about. The error Unrecognized named-value: 'env'
is telling you that GitHub is not recognizing the YAML you wrote at line 13. It's a syntax error.
In a GitHub workflow you can use env
either in jobs.<job_id>.env
or in jobs.<job_id>.steps[*].env
. See here for details.
This YAML should work:
on:
push:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
container:
image: ${{ env.MAVEN_VERSION }}
steps:
- name: Env Variable
env:
MAVEN_VERSION: maven:3.8.6-jdk-11
run: echo ${{ env.MAVEN_VERSION }}
Also, note that when you only specify a container image, you can omit the image keyword.
Upvotes: -7