-
Notifications
You must be signed in to change notification settings - Fork 959
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"Unrecognized named-value: 'env'. Located at position 1 within expression" when used in reusable workflow jobs #2372
Comments
I'm having the same issue |
I have the same issue, there is workaround to use |
Having the same issue . When it's going to fix? |
Hi GHA folks: Any update on providing this capability? Some of us are using workarounds, including the one suggested by @nicole0707. But, having this feature will make the intent very clear and clean. |
hello! if i can help u. or something need to do.say step b step |
workaround is to use as a secret in the main workflows and then you'll be able to parse it to env in the reusable workflow like
|
I'm having the same issue. Have we got any update? |
In my case, git is considering subscription id as a secret. I am trying to print NSG/ASG id and git is omitting the output. |
Trying to use this approach to workaround #520 and bummer... |
- use public qodana linter for PRs - do not collect and analyze coverage Coverage analysis suppressed in the _coverage.yml instead of main workflow because of the bug on actions side, see actions/runner#2372
It is also unavailable in called workflow. I tried to move check into there and got:
Called workflow is:
|
- use public qodana linter for PRs - do not collect and analyze coverage Coverage analysis suppressed in the _coverage.yml instead of main workflow because of the bug on actions side, see actions/runner#2372
- use public qodana linter for PRs - do not collect and analyze coverage Coverage analysis suppressed in the _coverage.yml instead of main workflow because of the bug on actions side, see actions/runner#2372
I'm having the same issue 😐 |
+1 |
+1. Get this fixed github, cmon. |
The env context is not available from jobs.<job_id>.with.<with_id>. See https://docs.github.com/en/enterprise-cloud@latest/actions/learn-github-actions/contexts#context-availability |
@whsalazar the question is what the reason behind this? And if there is no real reason, would be nice to have it. |
I guess I wasted 30 mins of my life and ended up here like the rest of us |
You can't use the env context outside steps, as described in the docs: You can use the env context in the value of any key in a step except for the id and uses keys. Feel free to submit feedback and feature request at https://github.com/orgs/community/discussions/categories/actions?discussions_q=is%3Aopen+env+jobs+category%3AActions |
I have the same issue, hope github action can pass the env variable in the furture |
Nasty workaround: https://stackoverflow.com/a/74217028/834280 |
Same problem here. I have several reusable workflows that should receive the same |
The solution is to pass the environment variables as the output of a job:
|
Hey this got me really close - at least now i can reference names of env vars I need in
|
@ffineis To pass secrets use |
@miguelangelgil yes thanks |
You can use |
2023 and still have the same issue |
### Why: Workflow is invalid in its current state and never runs ### What's being changed (if available, include any code snippets, screenshots, or gifs): - Use [outputs hack](actions/runner#2372) to load environment variables into the job-level conditional if --------- Co-authored-by: Dawson Booth <dawson@dawsonbooth.com>
Workflow is invalid in its current state and never runs screenshots, or gifs): - Use [outputs hack](actions/runner#2372) to load environment variables into the job-level conditional if Co-Authored-By: Dawson Booth <dawson@dawsonbooth.com>
This is only relevant for repository level variables. |
+1 We moved from GitLab years ago, and are still missing what we thought would be key/obvious features |
+1 |
Just checked the code for the runner and current impression is that this can not be fixed on runner side as the conditions which jobs get executed is taken server side. A runner simply executes all Jobs it gets, I could not find any conditions checking (found them for steps where this is working fine) Sadly server part is not open source so hard to support with fixing this |
I bumped into this; and resolved it by using It's not a long-term solution since it leads to a deprecation warning, nor is it appropriate for sensitive variables: " |
We were trying to use a repeated container image name. For anyone still searching, this part of the docs (from this comment) explained it for us. The It looks like YAML anchors are not supported and there might be a route forwards with repository variables in the |
Guess Github are aware and suggest using An extra job is required just to pass the env var into Edit: also, even for the matrix example above - this is a huge pain as echo / output completely breaks complex or multiline matrix definitions, that need to be encoded back and forth from string to string to json.. |
This is highly unexpected and should just work. |
For others that might end up here, this is what worked for me in the interim for multi-line matrix passing between jobs In Github repo environment I define a multi-line var called
<-- Matrix can also be defined in Workflow itself without repo env vars
Jobs defined as:
This |
Hope this could help someone as I recently faced a similar issue and managed to work around it. @dror-g, @magmanu, @lure8225, a solution with no job that just outputs the matrix value. The solution is a bit tricky but covers:
Adding a new predefined matrix is a bit tricky as this needs to be kind of a valid JSON string KEY: VALUE but without the opening and closing curly brackets. name: Predefined Matrix
on:
workflow_dispatch:
inputs:
server_group:
type: choice
options:
- SERVER-GROUP-A
- SERVER-GROUP-B
description: 'Select Server Group'
jobs:
# 1. We define JSON string using the "format" expression as multiline strings as input parameter for fromJSON fails :/
# 2. The result of the format expression (i.e. JSON string) we provide as an input parameter to the fromJSON expression.
# 3. We take the value of the user-selected input from the fromJSON result object to pass as a matrix value
multi-deploy:
strategy:
matrix:
server: ${{
fromJSON(
format(
'{{{0}, {1}}}',
'"SERVER-GROUP-A":["server A1", "server A2", "server A3"]',
'"SERVER-GROUP-B":["server B1", "server B2"]',
)
)[ inputs.server_group ] }}
name: Processing ${{ matrix.server }}
uses: ./REUSABLE-DEPLOYMENT-WORKFLOW.yaml
with:
server: ${{ matrix.server }}
|
please github devs do something 😩 |
@anajuliabit I'm mostly sure that exactly 0 of GH devs are subscribed to every issue and are reading every comment. You'd have to summon their attention via explicit pings. For example, ping @ericsciple @TingluoHuang |
The |
To elaborate a bit more, Similarly, the |
Skimming the replies regarding use cases... One solution might be to check-in a script which sets up your job environment variables. https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#setting-an-environment-variable. For scenarios involving run-context or workflow dispatch inputs, Not perfect, but might work for many scenarios. |
Also note, reusable workflows are sort of a security boundary. That is why |
Hi @ericsciple thanks for responding 🙏 I know it's tough to unbundle the assortment of various issues that are being conflated into one. Perhaps you can think of error message improvements that'd send people to corresponding docs explaining that certain usage isn't supported, neither will be? That'd be super helpful to reduce confusion, as apparently there's a lot of difficulty in locating the authoritative docs. For example, I'm coming from a (prematurely closed) issue #1189 which reports the same error — but without reusable workflows, secrets, and under I.e. this does not work, throws the error: jobs:
acme-bundle:
runs-on: ubuntu-20.04
needs: build
env:
# if triggered from a branch containing /, use "wip", otherwise tag name
version: ${{ contains(github.ref_name, '/') && 'wip' || github.ref_name }}
fullfilename: acme-${{ env.version }}.${{ github.sha }}.bundle
steps:
[...]
- name: Pack
run: tar -czf $fullfilename --format posix -C DIST .
- name: Upload
run: aws s3 cp $fullfilename s3://$BUCKET/ACME/$version/$fullfilename
#-- NOTE: the workflow author wants both values as env-vars, to be used in shell steps.
#-- NOTE: the second var is defined using the first var ${{ env.version }}
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
# The workflow is not valid. .github/workflows/release.yml (Line: 190, Col: 21):
# Unrecognized named-value: 'env'. Located at position 1 within expression: env.version Can this be helped with somehow? |
+1 thanks @ulidtko - good feedback. I will forward along internally. |
Another longstanding gotcha. People are disappointed. - actions/runner#1189 - actions/runner#2372
… workflow variables Related tickets: re actions/runner#2372
Describe the bug
Usage of env in workflow that uses reusable workflow generates "Unrecognized named-value: 'env'. Located at position 1 within expression"
To Reproduce
Use the following yml:
Expected behavior
env.SOMETHING is usable and can be passed into reusable workflow
Actual behavior
The workflow is not valid. .github/workflows/create-branch.yml (Line: #, Col: ##): Unrecognized named-value: 'env'. Located at position 1 within expression: env.SOMETHING
Runner Version and Platform
Version of your runner?
OS of the machine running the runner?
ubuntu-latest
What's not working?
The text was updated successfully, but these errors were encountered: