act/pkg/runner/testdata/uses-composite/composite_action/action.yml
ChristopherHX 9868e13772
Feature: uses in composite (#793)
* Feature: uses in composite

* Negate logic

* Reduce complexity

* Update step_context.go

* Update step_context.go

* Update step_context.go

* Fix syntax error in test

* Bump

* Disable usage of actions/setup-node@v2

* Bump

* Fix step id collision

* Fix output command workaround

* Make secrets context inaccessible in composite

* Fix order after adding a workaround (needs tests)

Fixes https://github.com/nektos/act/pull/793#issuecomment-922329838

* Evaluate env before passing one step deeper

If env would contain any inputs, steps ctx or secrets there was undefined behaviour

* [no ci] prepare secret test

* Initial test pass inputs as env

* Fix syntax error

* extend test also for direct invoke

* Fix passing provided env as composite output

* Fix syntax error

* toUpper 'no such secret', act has a bug

* fix indent

* Fix env outputs in composite

* Test env outputs of composite

* Fix inputs not defined in docker actions

* Fix interpolate args input of docker actions

* Fix lint

* AllowCompositeIf now defaults to true

see https://github.com/actions/runner/releases/tag/v2.284.0

* Fix lint

* Fix env of docker action.yml

* Test calling a local docker action from composite

With input context hirachy

* local-action-dockerfile Test pass on action/runner

It seems action/runner ignores overrides of args,
if the target docker action has the args property set.

* Fix exec permissions of docker-local-noargs

* Revert getStepsContext change

* fix: handle composite action on error and continue

This change is a follow up of https://github.com/nektos/act/pull/840
and integrates with https://github.com/nektos/act/pull/793

There are two things included here:

- The default value for a step.if in an action need to be 'success()'
- We need to hand the error from a composite action back to the
  calling executor

Co-authored-by: Björn Brauer <bjoern.brauer@new-work.se>

* Patch inputs can be bool, float64 and string
for workflow_call
Also inputs is now always defined, but may be null

* Simplify cherry-picked commit

* Minor style adjustments

* Remove chmod +x from tests

now fails on windows like before

* Fix GITHUB_ACTION_PATH some action env vars

Fixes GITHUB_ACTION_REPOSITORY, GITHUB_ACTION_REF.

* Add comment to CompositeRestrictions

Co-authored-by: Markus Wolf <markus.wolf@new-work.se>
Co-authored-by: Björn Brauer <bjoern.brauer@new-work.se>
Co-authored-by: Ryan <me@hackerc.at>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2021-12-22 19:19:50 +00:00

96 lines
3 KiB
YAML

---
name: "Test Composite Action"
description: "Test action uses composite"
inputs:
test_input_required:
description: "Required input"
required: true
test_input_optional:
description: "optional defaulted input"
required: false
default: "test_input_optional_value"
test_input_optional_with_default_overriden:
description: "optional defaulted input"
required: false
default: "test_input_optional_value"
test_input_required_with_default:
description: "Required with default, due to an old bug of github actions this is allowed"
required: true
default: "test_input_optional_value"
test_input_required_with_default_overriden:
description: "Required with default, due to an old bug of github actions this is allowed"
required: true
default: "test_input_optional_value"
secret_input:
description: test pass a secret as input
outputs:
test_output:
description: "Output value to pass up"
value: ${{ steps.output.outputs.test_output }}
secret_output:
description: test pass a secret as output
value: ${{ format('{0}/{1}', inputs.secret_input, env.secret_input) }}
runs:
using: "composite"
steps:
- run: |
echo "#####################################"
echo "Inputs:"
echo "---"
echo "test_input_required=${{ inputs.test_input_required }}"
echo "test_input_optional=${{ inputs.test_input_optional }}"
echo "test_input_optional_with_default_overriden=${{ inputs.test_input_optional_with_default_overriden }}"
echo "test_input_required_with_default=${{ inputs.test_input_required_with_default }}"
echo "test_input_required_with_default_overriden=${{ inputs.test_input_required_with_default_overriden }}"
echo "---"
shell: bash
# Let's test the inputs
- run: |
if [ "${{ inputs.test_input_required }}" != "test_input_required_value" ]; then
exit 1
fi
shell: bash
- run: |
if [ "${{ inputs.test_input_optional }}" != "test_input_optional_value" ]; then
exit 1
fi
shell: bash
- run: |
if [ "${{ inputs.test_input_optional_with_default_overriden }}" != "test_input_optional_with_default_overriden" ]; then
exit 1
fi
shell: bash
- run: |
if [ "${{ inputs.test_input_required_with_default }}" != "test_input_optional_value" ]; then
exit 1
fi
shell: bash
- run: |
if [ "${{ inputs.test_input_required_with_default_overriden }}" != "test_input_required_with_default_overriden" ]; then
exit 1
fi
shell: bash
- run: |
if [ -z "$GITHUB_ACTION_PATH" ]; then
exit 1
fi
if [ -z "${{ github.action_path }}" ]; then
exit 2
fi
shell: bash
# Let's send up an output to test
- run: echo "::set-output name=test_output::test_output_value"
id: output
shell: bash
- run: echo "COMPOSITE_ACTION_ENV_OUTPUT=my test value" >> $GITHUB_ENV
shell: bash