Skip to content

Commit

Permalink
fix: remove composite restrictions
Browse files Browse the repository at this point in the history
  • Loading branch information
Ryan authored May 21, 2022
1 parent 166d063 commit b9a2114
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 68 deletions.
31 changes: 0 additions & 31 deletions pkg/model/workflow.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,6 @@ 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 {
Expand Down Expand Up @@ -431,22 +416,6 @@ func (s *Step) Type() StepType {
return StepTypeUsesActionRemote
}

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.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
}

// ReadWorkflow returns a list of jobs for a given workflow file reader
func ReadWorkflow(in io.Reader) (*Workflow, error) {
w := new(Workflow)
Expand Down
7 changes: 0 additions & 7 deletions pkg/runner/action.go
Original file line number Diff line number Diff line change
Expand Up @@ -364,13 +364,6 @@ func execAsComposite(step actionStep, containerActionDir string) common.Executor
action := step.getActionModel()

return func(ctx context.Context) error {
// Disable some features of composite actions, only for feature parity with github
for _, compositeStep := range action.Runs.Steps {
if err := compositeStep.Validate(rc.Config.CompositeRestrictions); err != nil {
return err
}
}

eval := rc.NewExpressionEvaluator()

inputs := make(map[string]interface{})
Expand Down
59 changes: 29 additions & 30 deletions pkg/runner/runner.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,36 +23,35 @@ type Runner interface {

// Config contains the config for a new runner
type Config struct {
Actor string // the user that triggered the event
Workdir string // path to working directory
BindWorkdir bool // bind the workdir to the job container
EventName string // name of event to run
EventPath string // path to JSON file to use for event.json in containers
DefaultBranch string // name of the main branch for this repository
ReuseContainers bool // reuse containers to maintain state
ForcePull bool // force pulling of the image, even if already present
ForceRebuild bool // force rebuilding local docker image action
LogOutput bool // log the output from docker run
JSONLogger bool // use json or text logger
Env map[string]string // env for containers
Secrets map[string]string // list of secrets
Token string // GitHub token
InsecureSecrets bool // switch hiding output when printing to terminal
Platforms map[string]string // list of platforms
Privileged bool // use privileged mode
UsernsMode string // user namespace to use
ContainerArchitecture string // Desired OS/architecture platform for running containers
ContainerDaemonSocket string // Path to Docker daemon socket
UseGitIgnore bool // controls if paths in .gitignore should not be copied into container, default true
GitHubInstance string // GitHub instance to use, default "github.com"
ContainerCapAdd []string // list of kernel capabilities to add to the containers
ContainerCapDrop []string // list of kernel capabilities to remove from the containers
AutoRemove bool // controls if the container is automatically removed upon workflow completion
ArtifactServerPath string // the path where the artifact server stores uploads
ArtifactServerPort string // the port the artifact server binds to
CompositeRestrictions *model.CompositeRestrictions // describes which features are available in composite actions
NoSkipCheckout bool // do not skip actions/checkout
RemoteName string // remote name in local git repo config
Actor string // the user that triggered the event
Workdir string // path to working directory
BindWorkdir bool // bind the workdir to the job container
EventName string // name of event to run
EventPath string // path to JSON file to use for event.json in containers
DefaultBranch string // name of the main branch for this repository
ReuseContainers bool // reuse containers to maintain state
ForcePull bool // force pulling of the image, even if already present
ForceRebuild bool // force rebuilding local docker image action
LogOutput bool // log the output from docker run
JSONLogger bool // use json or text logger
Env map[string]string // env for containers
Secrets map[string]string // list of secrets
Token string // GitHub token
InsecureSecrets bool // switch hiding output when printing to terminal
Platforms map[string]string // list of platforms
Privileged bool // use privileged mode
UsernsMode string // user namespace to use
ContainerArchitecture string // Desired OS/architecture platform for running containers
ContainerDaemonSocket string // Path to Docker daemon socket
UseGitIgnore bool // controls if paths in .gitignore should not be copied into container, default true
GitHubInstance string // GitHub instance to use, default "github.com"
ContainerCapAdd []string // list of kernel capabilities to add to the containers
ContainerCapDrop []string // list of kernel capabilities to remove from the containers
AutoRemove bool // controls if the container is automatically removed upon workflow completion
ArtifactServerPath string // the path where the artifact server stores uploads
ArtifactServerPort string // the port the artifact server binds to
NoSkipCheckout bool // do not skip actions/checkout
RemoteName string // remote name in local git repo config
}

// Resolves the equivalent host path inside the container
Expand Down

0 comments on commit b9a2114

Please sign in to comment.