valid

package
v0.17.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 4, 2021 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package valid contains the structs representing the atlantis.yaml config after it's been parsed and validated.

Package valid contains definitions of valid yaml configuration after its been parsed and validated.

Index

Constants

View Source
const (
	LocalPolicySet  string = "local"
	GithubPolicySet string = "github"
)
View Source
const AllowCustomWorkflowsKey = "allow_custom_workflows"
View Source
const AllowedOverridesKey = "allowed_overrides"
View Source
const AllowedWorkflowsKey = "allowed_workflows"
View Source
const ApplyRequirementsKey = "apply_requirements"
View Source
const ApprovedApplyReq = "approved"
View Source
const DefaultAutoPlanEnabled = true
View Source
const DefaultWorkflowName = "default"
View Source
const DeleteSourceBranchOnMergeKey = "delete_source_branch_on_merge"
View Source
const MergeableApplyReq = "mergeable"
View Source
const PoliciesPassedApplyReq = "policies_passed"
View Source
const PreWorkflowHooksKey = "pre_workflow_hooks"
View Source
const UnDivergedApplyReq = "undiverged"
View Source
const WorkflowKey = "workflow"

Variables

View Source
var DefaultApplyStage = Stage{
	Steps: []Step{
		{
			StepName: "apply",
		},
	},
}

DefaultApplyStage is the Atlantis default apply stage.

View Source
var DefaultPlanStage = Stage{
	Steps: []Step{
		{
			StepName: "init",
		},
		{
			StepName: "plan",
		},
	},
}

DefaultPlanStage is the Atlantis default plan stage.

View Source
var DefaultPolicyCheckStage = Stage{
	Steps: []Step{
		{
			StepName: "show",
		},
		{
			StepName: "policy_check",
		},
	},
}

DefaultPolicyCheckStage is the Atlantis default policy check stage.

View Source
var NonOverrideableApplyReqs = []string{PoliciesPassedApplyReq}

NonOverrideableApplyReqs will get applied across all "repos" in the server side config. If repo config is allowed overrides, they can override this. TODO: Make this more customizable, not everyone wants this rigid workflow maybe something along the lines of defining overridable/non-overrideable apply requirements in the config and removing the flag to enable policy checking.

Functions

This section is empty.

Types

type Autoplan

type Autoplan struct {
	WhenModified []string
	Enabled      bool
}

type GlobalCfg added in v0.7.0

type GlobalCfg struct {
	Repos      []Repo
	Workflows  map[string]Workflow
	PolicySets PolicySets
}

GlobalCfg is the final parsed version of server-side repo config.

func NewGlobalCfg added in v0.7.0

func NewGlobalCfg(allowRepoCfg bool, mergeableReq bool, approvedReq bool) GlobalCfg

NewGlobalCfg returns a global config that respects the parameters. allowRepoCfg is true if users want to allow repos full config functionality. mergeableReq is true if users want to set the mergeable apply requirement for all repos. approvedReq is true if users want to set the approved apply requirement for all repos. Deprecated: use NewGlobalCfgFromArgs

func NewGlobalCfgFromArgs added in v0.17.0

func NewGlobalCfgFromArgs(args GlobalCfgArgs) GlobalCfg

func NewGlobalCfgWithHooks deprecated added in v0.17.0

func NewGlobalCfgWithHooks(allowRepoCfg bool, mergeableReq bool, approvedReq bool, unDivergedReq bool, preWorkflowHooks []*PreWorkflowHook) GlobalCfg

Deprecated: use NewGlobalCfgFromArgs

func (GlobalCfg) DefaultProjCfg added in v0.7.0

func (g GlobalCfg) DefaultProjCfg(log logging.SimpleLogging, repoID string, repoRelDir string, workspace string) MergedProjectCfg

DefaultProjCfg returns the default project config for all projects under the repo with id repoID. It is used when there is no repo config.

func (GlobalCfg) MatchingRepo added in v0.17.3

func (g GlobalCfg) MatchingRepo(repoID string) *Repo

MatchingRepo returns an instance of Repo which matches a given repoID. If multiple repos match, return the last one for consistency with getMatchingCfg.

func (GlobalCfg) MergeProjectCfg added in v0.7.0

func (g GlobalCfg) MergeProjectCfg(log logging.SimpleLogging, repoID string, proj Project, rCfg RepoCfg) MergedProjectCfg

MergeProjectCfg merges proj and rCfg with the global config to return a final config. It assumes that all configs have been validated.

func (GlobalCfg) ValidateRepoCfg added in v0.7.0

func (g GlobalCfg) ValidateRepoCfg(rCfg RepoCfg, repoID string) error

ValidateRepoCfg validates that rCfg for repo with id repoID is valid based on our global config.

type GlobalCfgArgs added in v0.17.0

type GlobalCfgArgs struct {
	AllowRepoCfg       bool
	MergeableReq       bool
	ApprovedReq        bool
	UnDivergedReq      bool
	PolicyCheckEnabled bool
	PreWorkflowHooks   []*PreWorkflowHook
}

type MergedProjectCfg added in v0.7.0

type MergedProjectCfg struct {
	ApplyRequirements         []string
	Workflow                  Workflow
	AllowedWorkflows          []string
	RepoRelDir                string
	Workspace                 string
	Name                      string
	AutoplanEnabled           bool
	AutoMergeDisabled         bool
	TerraformVersion          *version.Version
	RepoCfgVersion            int
	PolicySets                PolicySets
	DeleteSourceBranchOnMerge bool
}

type PolicyOwners added in v0.17.0

type PolicyOwners struct {
	Users []string
}

type PolicySet added in v0.17.0

type PolicySet struct {
	Source string
	Path   string
	Name   string
	Owners PolicyOwners
}

type PolicySets added in v0.17.0

type PolicySets struct {
	Version    *version.Version
	Owners     PolicyOwners
	PolicySets []PolicySet
}

PolicySets defines version of policy checker binary(conftest) and a list of PolicySet objects. PolicySets struct is used by PolicyCheck workflow to build context to enforce policies.

func (*PolicySets) HasPolicies added in v0.17.0

func (p *PolicySets) HasPolicies() bool

func (*PolicySets) IsOwner added in v0.17.0

func (p *PolicySets) IsOwner(username string) bool

type PreWorkflowHook added in v0.16.0

type PreWorkflowHook struct {
	StepName   string
	RunCommand string
}

PreWorkflowHook is a map of custom run commands to run before workflows.

type Project

type Project struct {
	Dir                       string
	Workspace                 string
	Name                      *string
	WorkflowName              *string
	TerraformVersion          *version.Version
	Autoplan                  Autoplan
	ApplyRequirements         []string
	DeleteSourceBranchOnMerge *bool
}

func (Project) GetName added in v0.4.5

func (p Project) GetName() string

GetName returns the name of the project or an empty string if there is no project name.

type Repo added in v0.7.0

type Repo struct {
	// ID is the exact match id of this config.
	// If IDRegex is set then this will be empty.
	ID string
	// IDRegex is the regex match for this config.
	// If ID is set then this will be nil.
	IDRegex                   *regexp.Regexp
	BranchRegex               *regexp.Regexp
	ApplyRequirements         []string
	PreWorkflowHooks          []*PreWorkflowHook
	Workflow                  *Workflow
	AllowedWorkflows          []string
	AllowedOverrides          []string
	AllowCustomWorkflows      *bool
	DeleteSourceBranchOnMerge *bool
}

Repo is the final parsed version of server-side repo config.

func (Repo) BranchMatches added in v0.17.0

func (r Repo) BranchMatches(other string) bool

BranchMatches returns true if the branch other matches a branch regex (if preset).

func (Repo) IDMatches added in v0.7.0

func (r Repo) IDMatches(otherID string) bool

IDMatches returns true if the repo ID otherID matches this config.

func (Repo) IDString added in v0.7.0

func (r Repo) IDString() string

IDString returns a string representation of this config.

type RepoCfg added in v0.7.0

type RepoCfg struct {
	// Version is the version of the atlantis YAML file.
	Version                   int
	Projects                  []Project
	Workflows                 map[string]Workflow
	PolicySets                PolicySets
	Automerge                 bool
	ParallelApply             bool
	ParallelPlan              bool
	ParallelPolicyCheck       bool
	DeleteSourceBranchOnMerge *bool
}

RepoCfg is the atlantis.yaml config after it's been parsed and validated.

func (RepoCfg) FindProjectByName added in v0.7.0

func (r RepoCfg) FindProjectByName(name string) *Project

func (RepoCfg) FindProjectsByDir added in v0.7.0

func (r RepoCfg) FindProjectsByDir(dir string) []Project

FindProjectsByDir returns all projects that are in dir.

func (RepoCfg) FindProjectsByDirWorkspace added in v0.7.0

func (r RepoCfg) FindProjectsByDirWorkspace(repoRelDir string, workspace string) []Project

func (RepoCfg) FindProjectsByName added in v0.17.0

func (r RepoCfg) FindProjectsByName(name string) []Project

FindProjectsByName returns all projects that match with name.

func (RepoCfg) ValidateWorkspaceAllowed added in v0.17.0

func (r RepoCfg) ValidateWorkspaceAllowed(repoRelDir string, workspace string) error

validateWorkspaceAllowed returns an error if repoCfg defines projects in repoRelDir but none of them use workspace. We want this to be an error because if users have gone to the trouble of defining projects in repoRelDir then it's likely that if we're running a command for a workspace that isn't defined then they probably just typed the workspace name wrong.

type Stage

type Stage struct {
	Steps []Step
}

type Step

type Step struct {
	StepName  string
	ExtraArgs []string
	// RunCommand is either a custom run step or the command to run
	// during an env step to populate the environment variable dynamically.
	RunCommand string
	// EnvVarName is the name of the
	// environment variable that should be set by this step.
	EnvVarName string
	// EnvVarValue is the value to set EnvVarName to.
	EnvVarValue string
}

type Workflow

type Workflow struct {
	Name        string
	Apply       Stage
	Plan        Stage
	PolicyCheck Stage
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL