mirror of
https://code.forgejo.org/forgejo/runner.git
synced 2025-08-06 17:40:58 +00:00
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:
parent
73c17d4258
commit
62cc0aef3d
19 changed files with 465 additions and 159 deletions
|
@ -23,6 +23,21 @@ type Workflow struct {
|
|||
Defaults Defaults `yaml:"defaults"`
|
||||
}
|
||||
|
||||
// CompositeRestrictions is the structure to control what is allowed in composite actions
|
||||
type CompositeRestrictions struct {
|
||||
AllowCompositeUses bool
|
||||
AllowCompositeIf bool
|
||||
AllowCompositeContinueOnError bool
|
||||
}
|
||||
|
||||
func defaultCompositeRestrictions() *CompositeRestrictions {
|
||||
return &CompositeRestrictions{
|
||||
AllowCompositeUses: true,
|
||||
AllowCompositeIf: true,
|
||||
AllowCompositeContinueOnError: false,
|
||||
}
|
||||
}
|
||||
|
||||
// On events for the workflow
|
||||
func (w *Workflow) On() []string {
|
||||
switch w.RawOn.Kind {
|
||||
|
@ -411,11 +426,18 @@ func (s *Step) Type() StepType {
|
|||
return StepTypeUsesActionRemote
|
||||
}
|
||||
|
||||
func (s *Step) Validate() error {
|
||||
if s.Type() != StepTypeRun {
|
||||
func (s *Step) Validate(config *CompositeRestrictions) error {
|
||||
if config == nil {
|
||||
config = defaultCompositeRestrictions()
|
||||
}
|
||||
if s.Type() != StepTypeRun && !config.AllowCompositeUses {
|
||||
return fmt.Errorf("(StepID: %s): Unexpected value 'uses'", s.String())
|
||||
} else if s.Shell == "" {
|
||||
} else if s.Type() == StepTypeRun && s.Shell == "" {
|
||||
return fmt.Errorf("(StepID: %s): Required property is missing: 'shell'", s.String())
|
||||
} else if !s.If.IsZero() && !config.AllowCompositeIf {
|
||||
return fmt.Errorf("(StepID: %s): Property is not available: 'if'", s.String())
|
||||
} else if s.ContinueOnError && !config.AllowCompositeContinueOnError {
|
||||
return fmt.Errorf("(StepID: %s): Property is not available: 'continue-on-error'", s.String())
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue