Skip to content

Commit

Permalink
fix: prevent unintended input replacement in reusable workflows with …
Browse files Browse the repository at this point in the history
…workflow_dispatch when using workflow_call (#2502)

* Remove redundant check

See: #2464 (comment)

* Add condition to prevent replacing inputs in reusable workflows with workflow_dispatch inputs

Closes: #2464

* fmt

* Revert "Remove redundant check"

This reverts commit 6345596.

* add test

* Update runner_test.go

* update label

---------

Co-authored-by: ChristopherHX <[email protected]>
  • Loading branch information
mahmud2011 and ChristopherHX authored Dec 29, 2024
1 parent bd8dda1 commit deea8ec
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 1 deletion.
2 changes: 1 addition & 1 deletion pkg/runner/expression.go
Original file line number Diff line number Diff line change
Expand Up @@ -497,7 +497,7 @@ func getEvaluatorInputs(ctx context.Context, rc *RunContext, step step, ghc *mod
}
}

if ghc.EventName == "workflow_dispatch" {
if rc.caller == nil && ghc.EventName == "workflow_dispatch" {
config := rc.Run.Workflow.WorkflowDispatchConfig()
if config != nil && config.Inputs != nil {
for k, v := range config.Inputs {
Expand Down
1 change: 1 addition & 0 deletions pkg/runner/runner_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,7 @@ func TestRunEvent(t *testing.T) {
{workdir, "workflow_dispatch_no_inputs_mapping", "workflow_dispatch", "", platforms, secrets},
{workdir, "workflow_dispatch-scalar", "workflow_dispatch", "", platforms, secrets},
{workdir, "workflow_dispatch-scalar-composite-action", "workflow_dispatch", "", platforms, secrets},
{workdir, "uses-workflow-defaults", "workflow_dispatch", "", platforms, secrets},
{workdir, "job-needs-context-contains-result", "push", "", platforms, secrets},
{"../model/testdata", "strategy", "push", "", platforms, secrets}, // TODO: move all testdata into pkg so we can validate it with planner and runner
{"../model/testdata", "container-volumes", "push", "", platforms, secrets},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: reuse

on:
workflow_dispatch:
inputs:
my-val:
type: string
required: true
default: "default_value_reuse_workflow_dispatch_call"
dispatch-val:
type: string
default: "I am a dispatch var for checking if I am being used in workflow_call"

workflow_call:
inputs:
my-val:
type: string
required: true
default: "default_value_reuse_workflow_call"

jobs:
reusable_workflow_job:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run a one-line script
run: echo "✅ 🚀 ✅ hello this is from workflow reuse. Value - " ${{ inputs.my-val }} ${{ github.event_name }} ${{ inputs.dispatch-val }}
- name: Assert
run: |
exit ${{ ( inputs.my-val == 'default_value_reuse_workflow_call' || inputs.my-val == 'passed value from main' ) && !inputs.dispatch-val && '0' || '1' }}
21 changes: 21 additions & 0 deletions pkg/runner/testdata/uses-workflow-defaults/workflow_dispatch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: CI

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

workflow_dispatch:

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run a one-line script
run: echo "✅ 🚀 ✅ hello this is from workflow main" ${{ github.event_name }}
call-reuse-w-val:
uses: ./.github/workflows/local-reusable-and-dispatch.yml
with:
my-val: "passed value from main"

0 comments on commit deea8ec

Please sign in to comment.