Documentation ¶
Index ¶
- Constants
- type ApplyExecutor
- type Command
- type CommandContext
- type CommandHandler
- type CommandName
- type CommandResponse
- type CommandRunner
- type CommitStatusUpdater
- type CommonData
- type DefaultCommitStatusUpdater
- type EnvLock
- type EnvLocker
- type ErrData
- type EventParser
- func (e *EventParser) DetermineCommand(comment string, vcsHost vcs.Host) (*Command, error)
- func (e *EventParser) ParseGithubIssueCommentEvent(comment *github.IssueCommentEvent) (baseRepo models.Repo, user models.User, pullNum int, err error)
- func (e *EventParser) ParseGithubPull(pull *github.PullRequest) (models.PullRequest, models.Repo, error)
- func (e *EventParser) ParseGithubRepo(ghRepo *github.Repository) (models.Repo, error)
- func (e *EventParser) ParseGitlabMergeCommentEvent(event gitlab.MergeCommentEvent) (baseRepo models.Repo, headRepo models.Repo, user models.User)
- func (e *EventParser) ParseGitlabMergeEvent(event gitlab.MergeEvent) (models.PullRequest, models.Repo)
- func (e *EventParser) ParseGitlabMergeRequest(mr *gitlab.MergeRequest) models.PullRequest
- type EventParsing
- type Executor
- type FailureData
- type FileWorkspace
- type GithubPullGetter
- type GitlabMergeRequestGetter
- type HelpExecutor
- type Hook
- type LockURLGenerator
- type MarkdownRenderer
- type ModifiedProjectFinder
- type PlanExecutor
- type PlanSuccess
- type PreExecuteResult
- type ProjectConfig
- type ProjectConfigManager
- type ProjectConfigReader
- type ProjectFinder
- type ProjectPreExecute
- type ProjectPreExecutor
- type ProjectResult
- type PullCleaner
- type PullClosedExecutor
- type ResultData
- type Workspace
Constants ¶
const ProjectConfigFile = "atlantis.yaml"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ApplyExecutor ¶
type ApplyExecutor struct { VCSClient vcs.ClientProxy Terraform *terraform.Client RequireApproval bool Run *run.Run Workspace Workspace ProjectPreExecute *ProjectPreExecute Webhooks webhooks.Sender }
func (*ApplyExecutor) Execute ¶
func (a *ApplyExecutor) Execute(ctx *CommandContext) CommandResponse
type Command ¶
type Command struct { Name CommandName Environment string Verbose bool Flags []string }
type CommandContext ¶
type CommandHandler ¶
type CommandHandler struct { PlanExecutor Executor ApplyExecutor Executor HelpExecutor Executor LockURLGenerator LockURLGenerator VCSClient vcs.ClientProxy GithubPullGetter GithubPullGetter GitlabMergeRequestGetter GitlabMergeRequestGetter CommitStatusUpdater CommitStatusUpdater EventParser EventParsing EnvLocker EnvLocker MarkdownRenderer *MarkdownRenderer Logger logging.SimpleLogging }
CommandHandler is the first step when processing a comment command.
func (*CommandHandler) ExecuteCommand ¶
func (c *CommandHandler) ExecuteCommand(baseRepo models.Repo, headRepo models.Repo, user models.User, pullNum int, cmd *Command, vcsHost vcs.Host)
ExecuteCommand executes the command
func (*CommandHandler) SetLockURL ¶
func (c *CommandHandler) SetLockURL(f func(id string) (url string))
type CommandName ¶
type CommandName int
const ( Apply CommandName = iota Plan Help )
func (CommandName) String ¶
func (c CommandName) String() string
type CommandResponse ¶
type CommandResponse struct { Error error Failure string ProjectResults []ProjectResult }
type CommandRunner ¶
type CommitStatusUpdater ¶ added in v0.2.0
type CommitStatusUpdater interface { Update(repo models.Repo, pull models.PullRequest, status vcs.CommitStatus, cmd *Command, host vcs.Host) error UpdateProjectResult(ctx *CommandContext, res CommandResponse) error }
type CommonData ¶
type DefaultCommitStatusUpdater ¶ added in v0.2.0
type DefaultCommitStatusUpdater struct {
Client vcs.ClientProxy
}
func (*DefaultCommitStatusUpdater) Update ¶ added in v0.2.0
func (d *DefaultCommitStatusUpdater) Update(repo models.Repo, pull models.PullRequest, status vcs.CommitStatus, cmd *Command, host vcs.Host) error
func (*DefaultCommitStatusUpdater) UpdateProjectResult ¶ added in v0.2.0
func (d *DefaultCommitStatusUpdater) UpdateProjectResult(ctx *CommandContext, res CommandResponse) error
type EnvLock ¶
type EnvLock struct {
// contains filtered or unexported fields
}
EnvLock is used to prevent multiple runs and commands from occurring at the same time for a single repo, pull, and environment
func NewEnvLock ¶
func NewEnvLock() *EnvLock
type ErrData ¶
type ErrData struct { Error string CommonData }
type EventParser ¶
type EventParser struct { GithubUser string GithubToken string GitlabUser string GitlabToken string }
func (*EventParser) DetermineCommand ¶
DetermineCommand parses the comment as an atlantis command. If it succeeds, it returns the command. Otherwise it returns error.
func (*EventParser) ParseGithubIssueCommentEvent ¶ added in v0.2.0
func (e *EventParser) ParseGithubIssueCommentEvent(comment *github.IssueCommentEvent) (baseRepo models.Repo, user models.User, pullNum int, err error)
func (*EventParser) ParseGithubPull ¶ added in v0.2.0
func (e *EventParser) ParseGithubPull(pull *github.PullRequest) (models.PullRequest, models.Repo, error)
func (*EventParser) ParseGithubRepo ¶ added in v0.2.0
func (e *EventParser) ParseGithubRepo(ghRepo *github.Repository) (models.Repo, error)
func (*EventParser) ParseGitlabMergeCommentEvent ¶ added in v0.2.0
func (e *EventParser) ParseGitlabMergeCommentEvent(event gitlab.MergeCommentEvent) (baseRepo models.Repo, headRepo models.Repo, user models.User)
ParseGitlabMergeCommentEvent creates Atlantis models out of a GitLab event.
func (*EventParser) ParseGitlabMergeEvent ¶ added in v0.2.0
func (e *EventParser) ParseGitlabMergeEvent(event gitlab.MergeEvent) (models.PullRequest, models.Repo)
func (*EventParser) ParseGitlabMergeRequest ¶ added in v0.2.0
func (e *EventParser) ParseGitlabMergeRequest(mr *gitlab.MergeRequest) models.PullRequest
type EventParsing ¶
type EventParsing interface { DetermineCommand(comment string, vcsHost vcs.Host) (*Command, error) ParseGithubIssueCommentEvent(comment *github.IssueCommentEvent) (baseRepo models.Repo, user models.User, pullNum int, err error) ParseGithubPull(pull *github.PullRequest) (models.PullRequest, models.Repo, error) ParseGithubRepo(ghRepo *github.Repository) (models.Repo, error) ParseGitlabMergeEvent(event gitlab.MergeEvent) (models.PullRequest, models.Repo) ParseGitlabMergeCommentEvent(event gitlab.MergeCommentEvent) (baseRepo models.Repo, headRepo models.Repo, user models.User) ParseGitlabMergeRequest(mr *gitlab.MergeRequest) models.PullRequest }
type Executor ¶
type Executor interface {
Execute(ctx *CommandContext) CommandResponse
}
type FailureData ¶
type FailureData struct { Failure string CommonData }
type FileWorkspace ¶
type FileWorkspace struct {
DataDir string
}
func (*FileWorkspace) Clone ¶
func (w *FileWorkspace) Clone( log *logging.SimpleLogger, baseRepo models.Repo, headRepo models.Repo, p models.PullRequest, env string) (string, error)
Clone git clones headRepo, checks out the branch and then returns the absolute path to the root of the cloned repo.
func (*FileWorkspace) Delete ¶
func (w *FileWorkspace) Delete(r models.Repo, p models.PullRequest) error
Delete deletes the workspace for this repo and pull
func (*FileWorkspace) GetWorkspace ¶
func (w *FileWorkspace) GetWorkspace(r models.Repo, p models.PullRequest, env string) (string, error)
type GithubPullGetter ¶ added in v0.2.0
type GitlabMergeRequestGetter ¶ added in v0.2.0
type HelpExecutor ¶
type HelpExecutor struct{}
func (*HelpExecutor) Execute ¶
func (h *HelpExecutor) Execute(ctx *CommandContext) CommandResponse
type Hook ¶
type Hook struct {
Commands []string `yaml:"commands"`
}
Hook represents the commands that can be run at a certain stage.
type LockURLGenerator ¶
type MarkdownRenderer ¶ added in v0.2.0
type MarkdownRenderer struct{}
MarkdownRenderer renders responses as markdown
func (*MarkdownRenderer) Render ¶ added in v0.2.0
func (g *MarkdownRenderer) Render(res CommandResponse, cmdName CommandName, log string, verbose bool) string
Render formats the data into a string that can be commented back to GitHub. nolint: interfacer
type ModifiedProjectFinder ¶
type PlanExecutor ¶
type PlanExecutor struct { VCSClient vcs.ClientProxy Terraform terraform.Runner Locker locking.Locker LockURL func(id string) (url string) Run run.Runner Workspace Workspace ProjectPreExecute ProjectPreExecutor ProjectFinder ModifiedProjectFinder }
PlanExecutor handles everything related to running terraform plan.
func (*PlanExecutor) Execute ¶
func (p *PlanExecutor) Execute(ctx *CommandContext) CommandResponse
func (*PlanExecutor) SetLockURL ¶
func (p *PlanExecutor) SetLockURL(f func(id string) (url string))
type PlanSuccess ¶
type PreExecuteResult ¶
type PreExecuteResult struct { ProjectResult ProjectResult ProjectConfig ProjectConfig TerraformVersion *version.Version LockResponse locking.TryLockResponse }
type ProjectConfig ¶
type ProjectConfig struct { // PreInit is a slice of command strings to run prior to terraform init. PreInit []string // PreGet is a slice of command strings to run prior to terraform get. PreGet []string // PrePlan is a slice of command strings to run prior to terraform plan. PrePlan []string // PostPlan is a slice of command strings to run after terraform plan. PostPlan []string // PreApply is a slice of command strings to run prior to terraform apply. PreApply []string // PostApply is a slice of command strings to run after terraform apply. PostApply []string // TerraformVersion is the version specified in the config file or nil // if version wasn't specified. TerraformVersion *version.Version // contains filtered or unexported fields }
ProjectConfig is a more usable version of projectConfigYAML that we can return to our callers. It holds the config for a project.
func (*ProjectConfig) GetExtraArguments ¶
func (c *ProjectConfig) GetExtraArguments(command string) []string
GetExtraArguments returns the arguments that were specified to be appended to command in the project config file.
type ProjectConfigManager ¶
type ProjectConfigManager struct{}
ProjectConfigManager deals with project config files that users can use to specify additional behaviour around how Atlantis executes for a project.
func (*ProjectConfigManager) Exists ¶
func (c *ProjectConfigManager) Exists(projectPath string) bool
Exists returns true if an atlantis config file exists for the project at projectPath. projectPath is an absolute path to the project.
func (*ProjectConfigManager) Read ¶
func (c *ProjectConfigManager) Read(execPath string) (ProjectConfig, error)
Read attempts to read the project config file for the project at projectPath. NOTE: projectPath is not the path to the actual config file. Returns the parsed ProjectConfig or error if unable to read.
type ProjectConfigReader ¶
type ProjectConfigReader interface { // Exists returns true if a project config file exists at projectPath. Exists(projectPath string) bool // Read attempts to read the project config file for the project at projectPath. // NOTE: projectPath is not the path to the actual config file. // Returns the parsed ProjectConfig or error if unable to read. Read(projectPath string) (ProjectConfig, error) }
ProjectConfigReader implements reading project config.
type ProjectFinder ¶
type ProjectFinder struct{}
ProjectFinder identifies projects in a repo.
func (*ProjectFinder) FindModified ¶
func (p *ProjectFinder) FindModified(log *logging.SimpleLogger, modifiedFiles []string, repoFullName string) []models.Project
FindModified returns the list of projects that were modified based on the modifiedFiles. The list will be de-duplicated.
type ProjectPreExecute ¶
type ProjectPreExecute struct { Locker locking.Locker ConfigReader ProjectConfigReader Terraform terraform.Runner Run run.Runner }
func (*ProjectPreExecute) Execute ¶
func (p *ProjectPreExecute) Execute(ctx *CommandContext, repoDir string, project models.Project) PreExecuteResult
type ProjectPreExecutor ¶
type ProjectPreExecutor interface {
Execute(ctx *CommandContext, repoDir string, project models.Project) PreExecuteResult
}
type ProjectResult ¶
type ProjectResult struct { Path string Error error Failure string PlanSuccess *PlanSuccess ApplySuccess string }
func (ProjectResult) Status ¶
func (p ProjectResult) Status() vcs.CommitStatus
type PullCleaner ¶
type PullClosedExecutor ¶
type PullClosedExecutor struct { Locker locking.Locker VCSClient vcs.ClientProxy Workspace Workspace }
func (*PullClosedExecutor) CleanUpPull ¶
func (p *PullClosedExecutor) CleanUpPull(repo models.Repo, pull models.PullRequest, host vcs.Host) error
type ResultData ¶
type ResultData struct { Results map[string]string CommonData }
type Workspace ¶
type Workspace interface { // Clone git clones headRepo, checks out the branch and then returns the absolute // path to the root of the cloned repo. Clone(log *logging.SimpleLogger, baseRepo models.Repo, headRepo models.Repo, p models.PullRequest, env string) (string, error) GetWorkspace(r models.Repo, p models.PullRequest, env string) (string, error) Delete(r models.Repo, p models.PullRequest) error }
Source Files ¶
- apply_executor.go
- command_context.go
- command_handler.go
- command_name.go
- command_response.go
- commit_status_updater.go
- env_lock.go
- event_parser.go
- executor.go
- help_executor.go
- markdown_renderer.go
- plan_executor.go
- project_config.go
- project_finder.go
- project_pre_execute.go
- project_result.go
- pull_closed_executor.go
- workspace.go
Directories ¶
Path | Synopsis |
---|---|
Package locking handles locking projects when they have in-progress runs.
|
Package locking handles locking projects when they have in-progress runs. |
boltdb
Package boltdb provides a locking implementation using Bolt.
|
Package boltdb provides a locking implementation using Bolt. |
Package models holds all models that are needed across packages.
|
Package models holds all models that are needed across packages. |
Package run handles running commands prior and following the regular Atlantis commands.
|
Package run handles running commands prior and following the regular Atlantis commands. |
Package terraform handles the actual running of terraform commands
|
Package terraform handles the actual running of terraform commands |