Documentation
¶
Index ¶
- func DDTracingExtras() map[string]any
- func GenericTracingExtras(b *Bootstrap, env env.Environment) map[string]any
- func Merge(maps ...map[string]any) map[string]any
- type Bootstrap
- func (b *Bootstrap) Cancel() error
- func (b *Bootstrap) CheckoutPhase(ctx context.Context) error
- func (b *Bootstrap) CommandPhase(ctx context.Context) (error, error)
- func (b *Bootstrap) PluginPhase(ctx context.Context) error
- func (b *Bootstrap) Run(ctx context.Context) (exitCode int)
- func (b *Bootstrap) VendoredPluginPhase(ctx context.Context) error
- type Config
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DDTracingExtras ¶ added in v3.36.0
func GenericTracingExtras ¶ added in v3.36.0
func GenericTracingExtras(b *Bootstrap, env env.Environment) map[string]any
Types ¶
type Bootstrap ¶
type Bootstrap struct {
// Config provides the bootstrap configuration
Config
// contains filtered or unexported fields
}
Bootstrap represents the phases of execution in a Buildkite Job. It's run as a sub-process of the buildkite-agent and finishes at the conclusion of a job. Historically (prior to v3) the bootstrap was a shell script, but was ported to Golang for portability and testability
func (*Bootstrap) Cancel ¶
Cancel interrupts any running shell processes and causes the bootstrap to stop
func (*Bootstrap) CheckoutPhase ¶
CheckoutPhase creates the build directory and makes sure we're running the build at the right commit.
func (*Bootstrap) CommandPhase ¶
CommandPhase determines how to run the build, and then runs it
func (*Bootstrap) PluginPhase ¶
PluginPhase is where plugins that weren't filtered in the Environment phase are checked out and made available to later phases
type Config ¶
type Config struct {
// The command to run
Command string
// The ID of the job being run
JobID string
// If the bootstrap is in debug mode
Debug bool
// The repository that needs to be cloned
Repository string `env:"BUILDKITE_REPO"`
// The commit being built
Commit string
// The branch of the commit
Branch string
// The tag of the job commit
Tag string
// Optional refspec to override git fetch
RefSpec string `env:"BUILDKITE_REFSPEC"`
// Plugin definition for the job
Plugins string
// Should git submodules be checked out
GitSubmodules bool
// If the commit was part of a pull request, this will container the PR number
PullRequest string
// The provider of the pipeline
PipelineProvider string
// Slug of the current organization
OrganizationSlug string
// Slug of the current pipeline
PipelineSlug string
// Name of the agent running the bootstrap
AgentName string
// Name of the queue the agent belongs to, if tagged
Queue string
// Should the bootstrap remove an existing checkout before running the job
CleanCheckout bool `env:"BUILDKITE_CLEAN_CHECKOUT"`
// Flags to pass to "git clone" command
GitCloneFlags string `env:"BUILDKITE_GIT_CLONE_FLAGS"`
// Flags to pass to "git fetch" command
GitFetchFlags string `env:"BUILDKITE_GIT_FETCH_FLAGS"`
// Flags to pass to "git clone" command for mirroring
GitCloneMirrorFlags string
// Flags to pass to "git clean" command
GitCleanFlags string `env:"BUILDKITE_GIT_CLEAN_FLAGS"`
// Whether or not to run the hooks/commands in a PTY
RunInPty bool
// Are arbitrary commands allowed to be executed
CommandEval bool
// Are plugins enabled?
PluginsEnabled bool
// Whether to validate plugin configuration
PluginValidation bool
// Are local hooks enabled?
LocalHooksEnabled bool
// Path where the builds will be run
BuildPath string
// Path where the repository mirrors are stored
GitMirrorsPath string
// Seconds to wait before allowing git mirror clone lock to be acquired
GitMirrorsLockTimeout int
// Skip updating the Git mirror before using it
GitMirrorsSkipUpdate bool `env:"BUILDKITE_GIT_MIRRORS_SKIP_UPDATE"`
// Path to the buildkite-agent binary
BinPath string
// Path to the global hooks
HooksPath string
// Path to the plugins directory
PluginsPath string
// Paths to automatically upload as artifacts when the build finishes
AutomaticArtifactUploadPaths string `env:"BUILDKITE_ARTIFACT_PATHS"`
// A custom destination to upload artifacts to (for example, s3://...)
ArtifactUploadDestination string `env:"BUILDKITE_ARTIFACT_UPLOAD_DESTINATION"`
// Whether ssh-keyscan is run on ssh hosts before checkout
SSHKeyscan bool
// The shell used to execute commands
Shell string
// Phases to execute, defaults to all phases
Phases []string
// What signal to use for command cancellation
CancelSignal process.Signal
// List of environment variable globs to redact from job output
RedactedVars []string
// Backend to use for tracing. If an empty string, no tracing will occur.
TracingBackend string
}
Config provides the configuration for the Bootstrap. Some of the keys are read from the environment after hooks are run, so we use struct tags to provide that mapping along with some reflection. It's a little bit magical but it's less work to maintain in the long run.
To add a new config option that is mapped from an env, add an struct tag and it's done
func (*Config) ReadFromEnvironment ¶
func (c *Config) ReadFromEnvironment(environ *env.Environment) map[string]string
ReadFromEnvironment reads configuration from the Environment, returns a map of the env keys that changed and the new values