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>
This commit is contained in:
ChristopherHX
2021-12-22 20:19:50 +01:00
committed by GitHub
parent 2ef30c3776
commit 9868e13772
19 changed files with 465 additions and 159 deletions

View File

@@ -38,8 +38,6 @@ func (sc *StepContext) NewExpressionEvaluator() ExpressionEvaluator {
vm := sc.RunContext.newVM()
configers := []func(*otto.Otto){
sc.vmEnv(),
sc.vmInputs(),
sc.vmNeeds(),
sc.vmSuccess(),
sc.vmFailure(),
@@ -237,6 +235,7 @@ func (rc *RunContext) newVM() *otto.Otto {
rc.vmMatrix(),
rc.vmEnv(),
rc.vmNeeds(),
rc.vmInputs(),
}
vm := otto.New()
for _, configer := range configers {
@@ -447,22 +446,9 @@ func (sc *StepContext) vmEnv() func(*otto.Otto) {
}
}
func (sc *StepContext) vmInputs() func(*otto.Otto) {
inputs := make(map[string]string)
// Set Defaults
if sc.Action != nil {
for k, input := range sc.Action.Inputs {
inputs[k] = sc.RunContext.NewExpressionEvaluator().Interpolate(input.Default)
}
}
for k, v := range sc.Step.With {
inputs[k] = sc.RunContext.NewExpressionEvaluator().Interpolate(v)
}
func (rc *RunContext) vmInputs() func(*otto.Otto) {
return func(vm *otto.Otto) {
_ = vm.Set("inputs", inputs)
_ = vm.Set("inputs", rc.Inputs)
}
}
@@ -587,7 +573,10 @@ func (rc *RunContext) vmRunner() func(*otto.Otto) {
func (rc *RunContext) vmSecrets() func(*otto.Otto) {
return func(vm *otto.Otto) {
_ = vm.Set("secrets", rc.Config.Secrets)
// Hide secrets from composite actions
if rc.Composite == nil {
_ = vm.Set("secrets", rc.Config.Secrets)
}
}
}