Skip to content
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

Wrong environment passed to node post when called by composite called by composite action #3514

Open
jsoref opened this issue Oct 20, 2024 · 1 comment
Labels
bug Something isn't working

Comments

@jsoref
Copy link
Contributor

jsoref commented Oct 20, 2024

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

  1. workflow has a job with steps: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/.github/workflows/test.yml#L9-L14

  2. workflow has a step which calls an action: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/.github/workflows/test.yml#L9-L11

  3. which calls an action: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/composite/action.yml#L18-L20

  4. which has inputs: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/call-node/action.yml#L1-L4

  5. and calls an action: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/call-node/action.yml#L8-L10

  6. which has a required input: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/node/action.yml#L2-L4

  7. and has a main and a post: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/node/action.yml#L7-L8

  8. the main reports the input it was given: https://github.com/check-spelling-sandbox/symmetrical-guide/blob/da624a50ec50529dfe6653d037b992fa07723b14/node/main.js#L9

  9. which logs that value: https://github.com/check-spelling-sandbox/symmetrical-guide/actions/runs/11422876413/job/31781374640#step:3:31

    node (main) 4

  10. 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

@jsoref jsoref added the bug Something isn't working label Oct 20, 2024
@jsoref
Copy link
Contributor Author

jsoref commented Oct 20, 2024

It is possible to work around this broken behavior by using https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/workflow-commands-for-github-actions#sending-values-to-the-pre-and-post-actions as in check-spelling-sandbox/symmetrical-guide@1516f0a, but each and every github node action shouldn't be expected to do this (including first party actions, such as github/codeql-action).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant