diff --git a/pkg/runner/action_composite.go b/pkg/runner/action_composite.go index 256d36e..9001b48 100644 --- a/pkg/runner/action_composite.go +++ b/pkg/runner/action_composite.go @@ -21,6 +21,8 @@ func evaluateCompositeInputAndEnv(ctx context.Context, parent *RunContext, step } } + ee := parent.NewStepExpressionEvaluator(ctx, step) + for inputID, input := range step.getActionModel().Inputs { envKey := regexp.MustCompile("[^A-Z0-9-]").ReplaceAllString(strings.ToUpper(inputID), "_") envKey = fmt.Sprintf("INPUT_%s", strings.ToUpper(envKey)) @@ -31,7 +33,8 @@ func evaluateCompositeInputAndEnv(ctx context.Context, parent *RunContext, step if value, ok := stepEnv[envKey]; defined && ok { env[envKey] = value } else { - env[envKey] = input.Default + // defaults could contain expressions + env[envKey] = ee.Interpolate(ctx, input.Default) } } diff --git a/pkg/runner/testdata/uses-composite-with-inputs/action/action.yml b/pkg/runner/testdata/uses-composite-with-inputs/action/action.yml index 0e35475..82337d5 100644 --- a/pkg/runner/testdata/uses-composite-with-inputs/action/action.yml +++ b/pkg/runner/testdata/uses-composite-with-inputs/action/action.yml @@ -5,6 +5,10 @@ inputs: some: description: "some input" required: true + other: + description: "other input" + default: "${{ inputs.some }}" + required: false outputs: out: description: "some output" @@ -17,3 +21,9 @@ runs: echo "action input=${{ inputs.some }}" [[ "${{ inputs.some == 'value' }}" = "true" ]] || exit 1 shell: bash + - run: | + echo "ENV_VAR=$ENV_VAR" + [[ "$ENV_VAR" = "value" ]] || exit 1 + shell: bash + env: + ENV_VAR: ${{ inputs.other }}