Wrong environment passed to node post when called by composite called by composite action
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 6.3k
- Forks
- 1.4k
- Avg merge
- 1d 16h
- Merged PRs (30d)
- 24
Description
Describe the bug
The inputs from a composite action are used by a called node action in the post phase instead of the inputs passed to the called node action.
To Reproduce
-
workflow has a job with steps: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/.github/workflows/test.yml#L9-L14
-
workflow has a step which calls an action: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/.github/workflows/test.yml#L9-L11
-
which calls an action: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/composite/action.yml#L18-L20
-
which has inputs: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/call-node/action.yml#L1-L4
-
and calls an action: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/call-node/action.yml#L8-L10
-
which has a required input: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/node/action.yml#L2-L4
-
and has a main and a post: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/node/action.yml#L7-L8
-
the main reports the input it was given: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/node/main.js#L9
-
which logs that value: https://github.com/check-spelling-sandbox/symmetrical-guide/actions/runs/11422876413/job/31781374640#step:3:31
node (main) 4
-
the post run dies: https://github.com/check-spelling-sandbox/symmetrical-guide/actions/runs/11422876413/job/31781374640#step:7:4
Post job cleanup. Post job cleanup. /home/runner/work/symmetrical-guide/symmetrical-guide/node/main-post.js:4 throw new Error(`Input required and not supplied: ${name}`); ^ Error: Input required and not supplied: test at getInput (/home/runner/work/symmetrical-guide/symmetrical-guide/node/main-post.js:4:11) at Object.<anonymous> (/home/runner/work/symmetrical-guide/symmetrical-guide/node/main-post.js:9:30) at Module._compile (node:internal/modules/cjs/loader:1358:14) at Module._extensions..js (node:internal/modules/cjs/loader:1416:10) at Module.load (node:internal/modules/cjs/loader:1[2](https://github.com/check-spelling-sandbox/symmetrical-guide/actions/runs/11422876413/job/31781374640#step:7:2)08:32) at Module._load (node:internal/modules/cjs/loader:1024:12) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12) at node:internal/main/run_main_module:28:49 Node.js v20.1[3](https://github.com/check-spelling-sandbox/symmetrical-guide/actions/runs/11422876413/job/31781374640#step:7:3).1 Post job cleanup. node (post) 3
You can see a previous run where the code was slightly different https://github.com/check-spelling-sandbox/symmetrical-guide/actions/runs/11422865129/job/31781351496
Prepare all required actions
Getting action download info
Run ./composite
Run : composite
composite (1)
Run ./node
node (main) 3
Prepare all required actions
Getting action download info
Run ./call-node
Run ./node
node (main) 4
Run ./node
node (main) 2
Post job cleanup.
node (post) 2
Post job cleanup.
Post job cleanup.
node (post) 1 <-- note that this matches the value seen for `composite (1)` but should have matched the value for `node (main) 4`
Post job cleanup.
node (post) 3
Expected behavior
The input provided to the action should be present in the environment for the post action as well. And not the inputs provided to some other action (the caller of the action).
Runner Version and Platform
Version of your runner? 2.320.0
OS of the machine running the runner? Ubuntu 22.04.5 LTS
What's not working?
Job Log Output
Runner and Worker's Diagnostic Logs
This is the reason I filed #3510
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the linked .github/workflows/test.yml and the composite/action.yml, call-node/action.yml, and node/action.yml reproduction files, then compare the inputs visible to node/main.js and node/main-post.js through the nested composite calls. Done means the post action receives the input passed to its own node action rather than the caller's input, without the reported required-input failure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, node.js
- Domain
- ci-cd, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100