valid

package
v0.19.2 Latest Latest
Warning

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

Go to latest
Published: Mar 11, 2022 License: Apache-2.0 Imports: 6 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 PostWorkflowHooksKey = "post_workflow_hooks"
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

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

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

func NewGlobalCfg

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

func NewGlobalCfgFromArgs(args GlobalCfgArgs) GlobalCfg

func NewGlobalCfgWithHooks deprecated

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

Deprecated: use NewGlobalCfgFromArgs

func (GlobalCfg) DefaultProjCfg

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

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

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

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

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

type MergedProjectCfg

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

type PolicyOwners struct {
	Users []string
}

type PolicySet

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

type PolicySets

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

func (p *PolicySets) HasPolicies() bool

func (*PolicySets) IsOwner

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

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

func (p Project) GetName() string

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

type Repo

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          []*WorkflowHook
	Workflow                  *Workflow
	PostWorkflowHooks         []*WorkflowHook
	AllowedWorkflows          []string
	AllowedOverrides          []string
	AllowCustomWorkflows      *bool
	DeleteSourceBranchOnMerge *bool
}

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

func (Repo) BranchMatches

func (r Repo) BranchMatches(other string) bool

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

func (Repo) IDMatches

func (r Repo) IDMatches(otherID string) bool

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

func (Repo) IDString

func (r Repo) IDString() string

IDString returns a string representation of this config.

type RepoCfg

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
	AllowedRegexpPrefixes     []string
}

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

func (RepoCfg) FindProjectByName

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

func (RepoCfg) FindProjectsByDir

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

FindProjectsByDir returns all projects that are in dir.

func (RepoCfg) FindProjectsByDirWorkspace

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

func (RepoCfg) FindProjectsByName

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

FindProjectsByName returns all projects that match with name.

func (RepoCfg) ValidateWorkspaceAllowed

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
}

type WorkflowHook

type WorkflowHook struct {
	StepName   string
	RunCommand string
}

WorkflowHook is a map of custom run commands to run before or after workflows.

Jump to

Keyboard shortcuts

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