Documentation ¶
Index ¶
- Constants
- Variables
- type AggregatePlan
- type AuthMethod
- type AuthToken
- type AuthType
- type BasicAuth
- type BasicAuthFlag
- type Build
- type BuildInput
- type BuildInputsOutputs
- type BuildPreparation
- type BuildPreparationStatus
- type BuildStatus
- type CheckRequestBody
- type CheckResponseBody
- type Config
- type ConfigResponse
- type Container
- type DependentGetPlan
- type DoPlan
- type EnsurePlan
- type Event
- type EventType
- type EventVersion
- type GenericOAuth
- type GenericOAuthFlag
- type GetPlan
- type GitHubAuth
- type GitHubAuthFlag
- type GitHubTeam
- type GitHubTeamFlag
- type GroupConfig
- type GroupConfigs
- type HijackInput
- type HijackOutput
- type HijackProcessSpec
- type HijackTTYSpec
- type HijackWindowSize
- type ImageResource
- type Info
- type Job
- type JobConfig
- type JobConfigs
- type JobInput
- type JobOutput
- type LogLevel
- type MalformedConfigError
- type MetadataField
- type MissingInputReasons
- type OnFailurePlan
- type OnSuccessPlan
- type Params
- type PathFlag
- type Pipe
- type Pipeline
- type Plan
- type PlanConfig
- type PlanFactory
- type PlanID
- type PlanSequence
- type PlanTraversal
- type PlanTraverseFunc
- type PublicBuildInput
- type PublicBuildPlan
- type PutPlan
- type RawConfig
- type Resource
- type ResourceConfig
- type ResourceConfigs
- type ResourceType
- type ResourceTypes
- type RetryPlan
- type Source
- type Step
- type Tags
- type TaskConfig
- type TaskInputConfig
- type TaskOutputConfig
- type TaskPlan
- type TaskRunConfig
- type Team
- type TimeoutPlan
- type TryPlan
- type UAAAuth
- type UAAAuthFlag
- type Version
- type VersionConfig
- type VersionedResource
- type Volume
- type Worker
- type WorkerResourceType
Constants ¶
const ( LinkRelNext = "next" LinkRelPrevious = "previous" PaginationQuerySince = "since" PaginationQueryUntil = "until" PaginationQueryFrom = "from" PaginationQueryTo = "to" PaginationQueryLimit = "limit" PaginationWebLimit = 100 PaginationAPIDefaultLimit = 100 )
const ( SaveConfig = "SaveConfig" GetConfig = "GetConfig" GetBuild = "GetBuild" GetBuildPlan = "GetBuildPlan" CreateBuild = "CreateBuild" ListBuilds = "ListBuilds" BuildEvents = "BuildEvents" BuildResources = "BuildResources" AbortBuild = "AbortBuild" GetBuildPreparation = "GetBuildPreparation" GetJob = "GetJob" CreateJobBuild = "CreateJobBuild" ListJobs = "ListJobs" ListJobBuilds = "ListJobBuilds" ListJobInputs = "ListJobInputs" GetJobBuild = "GetJobBuild" PauseJob = "PauseJob" UnpauseJob = "UnpauseJob" GetVersionsDB = "GetVersionsDB" JobBadge = "JobBadge" MainJobBadge = "MainJobBadge" ListResources = "ListResources" GetResource = "GetResource" PauseResource = "PauseResource" UnpauseResource = "UnpauseResource" CheckResource = "CheckResource" ListResourceVersions = "ListResourceVersions" EnableResourceVersion = "EnableResourceVersion" DisableResourceVersion = "DisableResourceVersion" ListBuildsWithVersionAsInput = "ListBuildsWithVersionAsInput" ListBuildsWithVersionAsOutput = "ListBuildsWithVersionAsOutput" ListAllPipelines = "ListAllPipelines" ListPipelines = "ListPipelines" GetPipeline = "GetPipeline" DeletePipeline = "DeletePipeline" OrderPipelines = "OrderPipelines" PausePipeline = "PausePipeline" UnpausePipeline = "UnpausePipeline" ExposePipeline = "ExposePipeline" HidePipeline = "HidePipeline" RenamePipeline = "RenamePipeline" CreatePipe = "CreatePipe" WritePipe = "WritePipe" ReadPipe = "ReadPipe" RegisterWorker = "RegisterWorker" ListWorkers = "ListWorkers" SetLogLevel = "SetLogLevel" GetLogLevel = "GetLogLevel" DownloadCLI = "DownloadCLI" GetInfo = "Info" ListContainers = "ListContainers" GetContainer = "GetContainer" HijackContainer = "HijackContainer" ListVolumes = "ListVolumes" ListAuthMethods = "ListAuthMethods" GetAuthToken = "GetAuthToken" GetUser = "GetUser" ListTeams = "ListTeams" SetTeam = "SetTeam" )
const ConfigVersionHeader = "X-Concourse-Config-Version"
const DefaultPipelineName = "main"
const DefaultTeamName = "main"
const VersionEvery = "every"
const VersionLatest = "latest"
Variables ¶
var Routes = rata.Routes([]rata.Route{ {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/config", Method: "PUT", Name: SaveConfig}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/config", Method: "GET", Name: GetConfig}, {Path: "/api/v1/builds", Method: "POST", Name: CreateBuild}, {Path: "/api/v1/builds", Method: "GET", Name: ListBuilds}, {Path: "/api/v1/builds/:build_id", Method: "GET", Name: GetBuild}, {Path: "/api/v1/builds/:build_id/plan", Method: "GET", Name: GetBuildPlan}, {Path: "/api/v1/builds/:build_id/events", Method: "GET", Name: BuildEvents}, {Path: "/api/v1/builds/:build_id/resources", Method: "GET", Name: BuildResources}, {Path: "/api/v1/builds/:build_id/abort", Method: "POST", Name: AbortBuild}, {Path: "/api/v1/builds/:build_id/preparation", Method: "GET", Name: GetBuildPreparation}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs", Method: "GET", Name: ListJobs}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs/:job_name", Method: "GET", Name: GetJob}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs/:job_name/builds", Method: "GET", Name: ListJobBuilds}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs/:job_name/builds", Method: "POST", Name: CreateJobBuild}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs/:job_name/inputs", Method: "GET", Name: ListJobInputs}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs/:job_name/builds/:build_name", Method: "GET", Name: GetJobBuild}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs/:job_name/pause", Method: "PUT", Name: PauseJob}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs/:job_name/unpause", Method: "PUT", Name: UnpauseJob}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/jobs/:job_name/badge", Method: "GET", Name: JobBadge}, {Path: "/api/v1/pipelines/:pipeline_name/jobs/:job_name/badge", Method: "GET", Name: MainJobBadge}, {Path: "/api/v1/pipelines", Method: "GET", Name: ListAllPipelines}, {Path: "/api/v1/teams/:team_name/pipelines", Method: "GET", Name: ListPipelines}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name", Method: "GET", Name: GetPipeline}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name", Method: "DELETE", Name: DeletePipeline}, {Path: "/api/v1/teams/:team_name/pipelines/ordering", Method: "PUT", Name: OrderPipelines}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/pause", Method: "PUT", Name: PausePipeline}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/unpause", Method: "PUT", Name: UnpausePipeline}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/expose", Method: "PUT", Name: ExposePipeline}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/hide", Method: "PUT", Name: HidePipeline}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/versions-db", Method: "GET", Name: GetVersionsDB}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/rename", Method: "PUT", Name: RenamePipeline}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources", Method: "GET", Name: ListResources}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name", Method: "GET", Name: GetResource}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name/pause", Method: "PUT", Name: PauseResource}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name/unpause", Method: "PUT", Name: UnpauseResource}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name/check", Method: "POST", Name: CheckResource}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name/versions", Method: "GET", Name: ListResourceVersions}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name/versions/:resource_version_id/enable", Method: "PUT", Name: EnableResourceVersion}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name/versions/:resource_version_id/disable", Method: "PUT", Name: DisableResourceVersion}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name/versions/:resource_version_id/input_to", Method: "GET", Name: ListBuildsWithVersionAsInput}, {Path: "/api/v1/teams/:team_name/pipelines/:pipeline_name/resources/:resource_name/versions/:resource_version_id/output_of", Method: "GET", Name: ListBuildsWithVersionAsOutput}, {Path: "/api/v1/pipes", Method: "POST", Name: CreatePipe}, {Path: "/api/v1/pipes/:pipe_id", Method: "PUT", Name: WritePipe}, {Path: "/api/v1/pipes/:pipe_id", Method: "GET", Name: ReadPipe}, {Path: "/api/v1/workers", Method: "GET", Name: ListWorkers}, {Path: "/api/v1/workers", Method: "POST", Name: RegisterWorker}, {Path: "/api/v1/log-level", Method: "GET", Name: GetLogLevel}, {Path: "/api/v1/log-level", Method: "PUT", Name: SetLogLevel}, {Path: "/api/v1/cli", Method: "GET", Name: DownloadCLI}, {Path: "/api/v1/info", Method: "GET", Name: GetInfo}, {Path: "/api/v1/containers", Method: "GET", Name: ListContainers}, {Path: "/api/v1/containers/:id", Method: "GET", Name: GetContainer}, {Path: "/api/v1/containers/:id/hijack", Method: "GET", Name: HijackContainer}, {Path: "/api/v1/volumes", Method: "GET", Name: ListVolumes}, {Path: "/api/v1/teams/:team_name/auth/methods", Method: "GET", Name: ListAuthMethods}, {Path: "/api/v1/teams/:team_name/auth/token", Method: "GET", Name: GetAuthToken}, {Path: "/api/v1/user", Method: "GET", Name: GetUser}, {Path: "/api/v1/teams", Method: "GET", Name: ListTeams}, {Path: "/api/v1/teams/:team_name", Method: "PUT", Name: SetTeam}, })
var SanitizeDecodeHook = func( dataKind reflect.Kind, valKind reflect.Kind, data interface{}, ) (interface{}, error) { if valKind == reflect.Map { if dataKind == reflect.Map { return sanitize(data) } } if valKind == reflect.String { if dataKind == reflect.String { return data, nil } if dataKind == reflect.Float64 { if f, ok := data.(float64); ok { return strconv.FormatFloat(f, 'f', -1, 64), nil } return nil, errors.New("impossible: float64 != float64") } return json.Marshal(data) } return data, nil }
var VersionConfigDecodeHook = func( srcType reflect.Type, dstType reflect.Type, data interface{}, ) (interface{}, error) { if dstType != reflect.TypeOf(VersionConfig{}) { return data, nil } switch { case srcType.Kind() == reflect.String: if s, ok := data.(string); ok { return VersionConfig{ Every: s == VersionEvery, Latest: s == VersionLatest, }, nil } case srcType.Kind() == reflect.Map: version := Version{} if versionConfig, ok := data.(map[interface{}]interface{}); ok { for key, val := range versionConfig { if sKey, ok := key.(string); ok { if sVal, ok := val.(string); ok { version[sKey] = strings.TrimSpace(sVal) } } } return VersionConfig{ Pinned: version, }, nil } } return data, nil }
Functions ¶
This section is empty.
Types ¶
type AggregatePlan ¶
type AggregatePlan []Plan
func (AggregatePlan) Public ¶
func (plan AggregatePlan) Public() *json.RawMessage
type AuthMethod ¶
type BasicAuthFlag ¶
type BasicAuthFlag struct { Username string `long:"username" description:"Username to use for basic auth."` Password string `long:"password" description:"Password to use for basic auth."` }
func (*BasicAuthFlag) IsConfigured ¶
func (auth *BasicAuthFlag) IsConfigured() bool
func (*BasicAuthFlag) Validate ¶
func (auth *BasicAuthFlag) Validate() error
type Build ¶
type Build struct { ID int `json:"id"` TeamName string `json:"team_name"` Name string `json:"name"` Status string `json:"status"` JobName string `json:"job_name,omitempty"` URL string `json:"url"` APIURL string `json:"api_url"` PipelineName string `json:"pipeline_name,omitempty"` StartTime int64 `json:"start_time,omitempty"` EndTime int64 `json:"end_time,omitempty"` ReapTime int64 `json:"reap_time,omitempty"` }
type BuildInput ¶
type BuildInputsOutputs ¶
type BuildInputsOutputs struct { Inputs []PublicBuildInput `json:"inputs"` Outputs []VersionedResource `json:"outputs"` }
type BuildPreparation ¶
type BuildPreparation struct { BuildID int `json:"build_id"` PausedPipeline BuildPreparationStatus `json:"paused_pipeline"` PausedJob BuildPreparationStatus `json:"paused_job"` MaxRunningBuilds BuildPreparationStatus `json:"max_running_builds"` Inputs map[string]BuildPreparationStatus `json:"inputs"` InputsSatisfied BuildPreparationStatus `json:"inputs_satisfied"` MissingInputReasons MissingInputReasons `json:"missing_input_reasons"` }
type BuildPreparationStatus ¶
type BuildPreparationStatus string
const ( BuildPreparationStatusUnknown BuildPreparationStatus = "unknown" BuildPreparationStatusBlocking BuildPreparationStatus = "blocking" BuildPreparationStatusNotBlocking BuildPreparationStatus = "not_blocking" )
type BuildStatus ¶
type BuildStatus string
const ( StatusStarted BuildStatus = "started" StatusPending BuildStatus = "pending" StatusSucceeded BuildStatus = "succeeded" StatusFailed BuildStatus = "failed" StatusErrored BuildStatus = "errored" StatusAborted BuildStatus = "aborted" )
type CheckRequestBody ¶
type CheckRequestBody struct {
From Version `json:"from"`
}
type CheckResponseBody ¶
type Config ¶
type Config struct { Groups GroupConfigs `yaml:"groups" json:"groups" mapstructure:"groups"` Resources ResourceConfigs `yaml:"resources" json:"resources" mapstructure:"resources"` ResourceTypes ResourceTypes `yaml:"resource_types" json:"resource_types" mapstructure:"resource_types"` Jobs JobConfigs `yaml:"jobs" json:"jobs" mapstructure:"jobs"` }
type ConfigResponse ¶
type Container ¶
type Container struct { ID string `json:"id"` TTLInSeconds int64 `json:"ttl_in_seconds"` ValidityInSeconds int64 `json:"validity_in_seconds"` WorkerName string `json:"worker_name"` PipelineName string `json:"pipeline_name"` JobName string `json:"job_name,omitempty"` BuildName string `json:"build_name,omitempty"` BuildID int `json:"build_id,omitempty"` StepType string `json:"step_type,omitempty"` StepName string `json:"step_name,omitempty"` ResourceName string `json:"resource_name,omitempty"` WorkingDirectory string `json:"working_directory,omitempty"` EnvironmentVariables []string `json:"env_variables,omitempty"` Attempts []int `json:"attempt,omitempty"` User string `json:"user,omitempty"` }
type DependentGetPlan ¶
type DependentGetPlan struct { Type string `json:"type"` Name string `json:"name,omitempty"` Resource string `json:"resource"` ResourceTypes ResourceTypes `json:"resource_types,omitempty"` Pipeline string `json:"pipeline"` PipelineID int `json:"pipeline_id"` Params Params `json:"params,omitempty"` Tags Tags `json:"tags,omitempty"` Source Source `json:"source"` }
func (DependentGetPlan) GetPlan ¶
func (plan DependentGetPlan) GetPlan() GetPlan
func (DependentGetPlan) Public ¶
func (plan DependentGetPlan) Public() *json.RawMessage
type DoPlan ¶
type DoPlan []Plan
func (DoPlan) Public ¶
func (plan DoPlan) Public() *json.RawMessage
type EnsurePlan ¶
func (EnsurePlan) Public ¶
func (plan EnsurePlan) Public() *json.RawMessage
type Event ¶
type Event interface { EventType() EventType Version() EventVersion }
type EventVersion ¶
type EventVersion string
semantic version for an individual event.
minor bumps are expected to be backwards-compatible, meaning clients can interpret them via the older handlers, and they can unmarshal into the new version trivially.
ATC will always emit the highest possible minor version for an event. this is so that we don't have to maintain copies of the event every time there's a minor bump.
an example of a minor bump would be an additive change, i.e. a new field.
major bumps are backwards-incompatible.
an example of a major bump would be the changing or removal of a field.
type GenericOAuth ¶
type GenericOAuth struct { DisplayName string `json:"display_name,omitempty"` ClientID string `json:"client_id,omitempty"` ClientSecret string `json:"client_secret,omitempty"` AuthURL string `json:"auth_url,omitempty"` TokenURL string `json:"token_url,omitempty"` AuthURLParams map[string]string `json:"auth_url_params,omitempty"` Scope string `json:"scope,omitempty"` }
type GenericOAuthFlag ¶
type GenericOAuthFlag struct { DisplayName string `long:"display-name" description:"Name for this auth method on the web UI."` ClientID string `long:"client-id" description:"Application client ID for enabling generic OAuth."` ClientSecret string `long:"client-secret" description:"Application client secret for enabling generic OAuth."` AuthURL string `long:"auth-url" description:"Generic OAuth provider AuthURL endpoint."` AuthURLParams map[string]string `long:"auth-url-param" description:"Parameter to pass to the authentication server AuthURL. Can be specified multiple times."` Scope string `long:"scope" description:"Optional scope required to authorize user"` TokenURL string `long:"token-url" description:"Generic OAuth provider TokenURL endpoint."` }
func (*GenericOAuthFlag) IsConfigured ¶
func (auth *GenericOAuthFlag) IsConfigured() bool
func (*GenericOAuthFlag) Validate ¶
func (auth *GenericOAuthFlag) Validate() error
type GetPlan ¶
type GetPlan struct { Type string `json:"type"` Name string `json:"name,omitempty"` Resource string `json:"resource"` ResourceTypes ResourceTypes `json:"resource_types,omitempty"` Pipeline string `json:"pipeline"` PipelineID int `json:"pipeline_id"` Source Source `json:"source"` Params Params `json:"params,omitempty"` Version Version `json:"version,omitempty"` Tags Tags `json:"tags,omitempty"` }
func (GetPlan) Public ¶
func (plan GetPlan) Public() *json.RawMessage
type GitHubAuth ¶
type GitHubAuth struct { ClientID string `json:"client_id,omitempty"` ClientSecret string `json:"client_secret,omitempty"` Organizations []string `json:"organizations,omitempty"` Teams []GitHubTeam `json:"teams,omitempty"` Users []string `json:"users,omitempty"` AuthURL string `json:"auth_url,omitempty"` TokenURL string `json:"token_url,omitempty"` APIURL string `json:"api_url,omitempty"` }
type GitHubAuthFlag ¶
type GitHubAuthFlag struct { ClientID string `long:"client-id" description:"Application client ID for enabling GitHub OAuth."` ClientSecret string `long:"client-secret" description:"Application client secret for enabling GitHub OAuth."` Organizations []string `long:"organization" description:"GitHub organization whose members will have access." value-name:"ORG"` Teams []GitHubTeamFlag `long:"team" description:"GitHub team whose members will have access." value-name:"ORG/TEAM"` Users []string `long:"user" description:"GitHub user to permit access." value-name:"LOGIN"` AuthURL string `long:"auth-url" description:"Override default endpoint AuthURL for Github Enterprise."` TokenURL string `long:"token-url" description:"Override default endpoint TokenURL for Github Enterprise."` APIURL string `long:"api-url" description:"Override default API endpoint URL for Github Enterprise."` }
func (*GitHubAuthFlag) IsConfigured ¶
func (auth *GitHubAuthFlag) IsConfigured() bool
func (*GitHubAuthFlag) Validate ¶
func (auth *GitHubAuthFlag) Validate() error
type GitHubTeam ¶
type GitHubTeamFlag ¶
func (*GitHubTeamFlag) UnmarshalFlag ¶
func (flag *GitHubTeamFlag) UnmarshalFlag(value string) error
type GroupConfig ¶
type GroupConfigs ¶
type GroupConfigs []GroupConfig
func (GroupConfigs) Lookup ¶
func (groups GroupConfigs) Lookup(name string) (GroupConfig, bool)
type HijackInput ¶
type HijackInput struct { Closed bool `json:"closed,omitempty"` Stdin []byte `json:"stdin,omitempty"` TTYSpec *HijackTTYSpec `json:"tty,omitempty"` }
type HijackOutput ¶
type HijackProcessSpec ¶
type HijackTTYSpec ¶
type HijackTTYSpec struct {
WindowSize HijackWindowSize `json:"window_size"`
}
type HijackWindowSize ¶
type ImageResource ¶
type Job ¶
type Job struct { Name string `json:"name"` URL string `json:"url"` Paused bool `json:"paused,omitempty"` FirstLoggedBuildID int `json:"first_logged_build_id,omitempty"` DisableManualTrigger bool `json:"disable_manual_trigger,omitempty"` NextBuild *Build `json:"next_build"` FinishedBuild *Build `json:"finished_build"` Inputs []JobInput `json:"inputs"` Outputs []JobOutput `json:"outputs"` Groups []string `json:"groups"` }
type JobConfig ¶
type JobConfig struct { Name string `yaml:"name" json:"name" mapstructure:"name"` Public bool `yaml:"public,omitempty" json:"public,omitempty" mapstructure:"public"` DisableManualTrigger bool `yaml:"disable_manual_trigger,omitempty" json:"disable_manual_trigger,omitempty" mapstructure:"disable_manual_trigger"` Serial bool `yaml:"serial,omitempty" json:"serial,omitempty" mapstructure:"serial"` SerialGroups []string `yaml:"serial_groups,omitempty" json:"serial_groups,omitempty" mapstructure:"serial_groups"` RawMaxInFlight int `yaml:"max_in_flight,omitempty" json:"max_in_flight,omitempty" mapstructure:"max_in_flight"` BuildLogsToRetain int `yaml:"build_logs_to_retain,omitempty" json:"build_logs_to_retain,omitempty" mapstructure:"build_logs_to_retain"` Plan PlanSequence `yaml:"plan,omitempty" json:"plan,omitempty" mapstructure:"plan"` }
func (JobConfig) GetSerialGroups ¶
func (JobConfig) MaxInFlight ¶
type JobConfigs ¶
type JobConfigs []JobConfig
type MalformedConfigError ¶
type MalformedConfigError struct {
UnmarshalError error
}
func (MalformedConfigError) Error ¶
func (malformedConfigError MalformedConfigError) Error() string
type MetadataField ¶
type MissingInputReasons ¶
type OnFailurePlan ¶
func (OnFailurePlan) Public ¶
func (plan OnFailurePlan) Public() *json.RawMessage
type OnSuccessPlan ¶
func (OnSuccessPlan) Public ¶
func (plan OnSuccessPlan) Public() *json.RawMessage
type Plan ¶
type Plan struct { ID PlanID `json:"id"` Attempts []int `json:"attempts,omitempty"` Aggregate *AggregatePlan `json:"aggregate,omitempty"` Do *DoPlan `json:"do,omitempty"` Get *GetPlan `json:"get,omitempty"` Put *PutPlan `json:"put,omitempty"` Task *TaskPlan `json:"task,omitempty"` Ensure *EnsurePlan `json:"ensure,omitempty"` OnSuccess *OnSuccessPlan `json:"on_success,omitempty"` OnFailure *OnFailurePlan `json:"on_failure,omitempty"` Try *TryPlan `json:"try,omitempty"` DependentGet *DependentGetPlan `json:"dependent_get,omitempty"` Timeout *TimeoutPlan `json:"timeout,omitempty"` Retry *RetryPlan `json:"retry,omitempty"` }
func (Plan) Public ¶
func (plan Plan) Public() *json.RawMessage
type PlanConfig ¶
type PlanConfig struct { // compose a nested sequence of plans // name of the nested 'do' RawName string `yaml:"name,omitempty" json:"name,omitempty" mapstructure:"name"` // a nested chain of steps to run Do *PlanSequence `yaml:"do,omitempty" json:"do,omitempty" mapstructure:"do"` // corresponds to an Aggregate plan, keyed by the name of each sub-plan Aggregate *PlanSequence `yaml:"aggregate,omitempty" json:"aggregate,omitempty" mapstructure:"aggregate"` // corresponds to Get and Put resource plans, respectively // name of 'input', e.g. bosh-stemcell Get string `yaml:"get,omitempty" json:"get,omitempty" mapstructure:"get"` // jobs that this resource must have made it through Passed []string `yaml:"passed,omitempty" json:"passed,omitempty" mapstructure:"passed"` // whether to trigger based on this resource changing Trigger bool `yaml:"trigger,omitempty" json:"trigger,omitempty" mapstructure:"trigger"` // name of 'output', e.g. rootfs-tarball Put string `yaml:"put,omitempty" json:"put,omitempty" mapstructure:"put"` // corresponding resource config, e.g. aws-stemcell Resource string `yaml:"resource,omitempty" json:"resource,omitempty" mapstructure:"resource"` // corresponds to a Task plan // name of 'task', e.g. unit, go1.3, go1.4 Task string `yaml:"task,omitempty" json:"task,omitempty" mapstructure:"task"` // run task privileged Privileged bool `yaml:"privileged,omitempty" json:"privileged,omitempty" mapstructure:"privileged"` // task config path, e.g. foo/build.yml TaskConfigPath string `yaml:"file,omitempty" json:"file,omitempty" mapstructure:"file"` // inlined task config TaskConfig *TaskConfig `yaml:"config,omitempty" json:"config,omitempty" mapstructure:"config"` // used by Get and Put for specifying params to the resource Params Params `yaml:"params,omitempty" json:"params,omitempty" mapstructure:"params"` // used to pass specific inputs/outputs as generic inputs/outputs in task config InputMapping map[string]string `yaml:"input_mapping,omitempty" json:"input_mapping,omitempty" mapstructure:"input_mapping"` OutputMapping map[string]string `yaml:"output_mapping,omitempty" json:"output_mapping,omitempty" mapstructure:"output_mapping"` // used to specify an image artifact from a previous build to be used as the image for a subsequent task container ImageArtifactName string `yaml:"image,omitempty" json:"image,omitempty" mapstructure:"image"` // used by Put to specify params for the subsequent Get GetParams Params `yaml:"get_params,omitempty" json:"get_params,omitempty" mapstructure:"get_params"` // used by any step to specify which workers are eligible to run the step Tags Tags `yaml:"tags,omitempty" json:"tags,omitempty" mapstructure:"tags"` // used by any step to run something when the step reports a failure Failure *PlanConfig `yaml:"on_failure,omitempty" json:"on_failure,omitempty" mapstructure:"on_failure"` // used on any step to always execute regardless of the step's completed state Ensure *PlanConfig `yaml:"ensure,omitempty" json:"ensure,omitempty" mapstructure:"ensure"` // used on any step to execute on successful completion of the step Success *PlanConfig `yaml:"on_success,omitempty" json:"on_success,omitempty" mapstructure:"on_success"` // used on any step to swallow failures and errors Try *PlanConfig `yaml:"try,omitempty" json:"try,omitempty" mapstructure:"try"` // used on any step to interrupt the step after a given duration Timeout string `yaml:"timeout,omitempty" json:"timeout,omitempty" mapstructure:"timeout"` // not present in yaml DependentGet string `yaml:"-" json:"-"` // repeat the step up to N times, until it works Attempts int `yaml:"attempts,omitempty" json:"attempts,omitempty" mapstructure:"attempts"` Version *VersionConfig `yaml:"version,omitempty" json:"version,omitempty" mapstructure:"version"` }
A PlanConfig is a flattened set of configuration corresponding to a particular Plan, where Source and Version are populated lazily.
func (PlanConfig) Name ¶
func (config PlanConfig) Name() string
func (PlanConfig) ResourceName ¶
func (config PlanConfig) ResourceName() string
type PlanFactory ¶
type PlanFactory struct {
// contains filtered or unexported fields
}
func NewPlanFactory ¶
func NewPlanFactory(startingNum int64) PlanFactory
func (PlanFactory) NewPlan ¶
func (factory PlanFactory) NewPlan(step Step) Plan
type PlanSequence ¶
type PlanSequence []PlanConfig
A PlanSequence corresponds to a chain of Compose plan, with an implicit `on: [success]` after every Task plan.
type PlanTraversal ¶
func NewPlanTraversal ¶
func NewPlanTraversal(f PlanTraverseFunc) PlanTraversal
type PlanTraverseFunc ¶
type PublicBuildInput ¶
type PublicBuildPlan ¶
type PublicBuildPlan struct { Schema string `json:"schema"` Plan *json.RawMessage `json:"plan"` }
type PutPlan ¶
type PutPlan struct { Type string `json:"type"` Name string `json:"name,omitempty"` Resource string `json:"resource"` ResourceTypes ResourceTypes `json:"resource_types,omitempty"` Pipeline string `json:"pipeline"` PipelineID int `json:"pipeline_id"` Source Source `json:"source"` Params Params `json:"params,omitempty"` Tags Tags `json:"tags,omitempty"` }
func (PutPlan) Public ¶
func (plan PutPlan) Public() *json.RawMessage
type ResourceConfig ¶
type ResourceConfig struct { Name string `yaml:"name" json:"name" mapstructure:"name"` Type string `yaml:"type" json:"type" mapstructure:"type"` Source Source `yaml:"source" json:"source" mapstructure:"source"` CheckEvery string `yaml:"check_every,omitempty" json:"check_every" mapstructure:"check_every"` }
type ResourceConfigs ¶
type ResourceConfigs []ResourceConfig
func (ResourceConfigs) Lookup ¶
func (resources ResourceConfigs) Lookup(name string) (ResourceConfig, bool)
type ResourceType ¶
type ResourceTypes ¶
type ResourceTypes []ResourceType
func (ResourceTypes) Lookup ¶
func (types ResourceTypes) Lookup(name string) (ResourceType, bool)
func (ResourceTypes) Without ¶
func (types ResourceTypes) Without(name string) ResourceTypes
type RetryPlan ¶
type RetryPlan []Plan
func (RetryPlan) Public ¶
func (plan RetryPlan) Public() *json.RawMessage
type Step ¶
type Step interface {
Public() *json.RawMessage
}
type TaskConfig ¶
type TaskConfig struct { // The platform the task must run on (e.g. linux, windows). Platform string `json:"platform,omitempty" yaml:"platform,omitempty" mapstructure:"platform"` // Optional string specifying an image to use for the build. Depending on the // platform, this may or may not be required (e.g. Windows/OS X vs. Linux). Image string `json:"image,omitempty" yaml:"image,omitempty" mapstructure:"image"` ImageResource *ImageResource `json:"image_resource,omitempty" yaml:"image_resource,omitempty" mapstructure:"image_resource"` // Parameters to pass to the task via environment variables. Params map[string]string `json:"params,omitempty" yaml:"params,omitempty" mapstructure:"params"` // Script to execute. Run TaskRunConfig `json:"run,omitempty" yaml:"run,omitempty" mapstructure:"run"` // The set of (logical, name-only) inputs required by the task. Inputs []TaskInputConfig `json:"inputs,omitempty" yaml:"inputs,omitempty" mapstructure:"inputs"` // The set of (logical, name-only) outputs provided by the task. Outputs []TaskOutputConfig `json:"outputs,omitempty" yaml:"outputs,omitempty" mapstructure:"outputs"` }
func LoadTaskConfig ¶
func LoadTaskConfig(configBytes []byte) (TaskConfig, error)
func (TaskConfig) Merge ¶
func (config TaskConfig) Merge(other TaskConfig) TaskConfig
func (TaskConfig) Validate ¶
func (config TaskConfig) Validate() error
type TaskInputConfig ¶
type TaskOutputConfig ¶
type TaskPlan ¶
type TaskPlan struct { Name string `json:"name,omitempty"` Privileged bool `json:"privileged"` Tags Tags `json:"tags,omitempty"` ConfigPath string `json:"config_path,omitempty"` Config *TaskConfig `json:"config,omitempty"` Params Params `json:"params,omitempty"` InputMapping map[string]string `json:"input_mapping,omitempty"` OutputMapping map[string]string `json:"output_mapping,omitempty"` ImageArtifactName string `json:"image,omitempty"` Pipeline string `json:"pipeline"` PipelineID int `json:"pipeline_id"` ResourceTypes ResourceTypes `json:"resource_types,omitempty"` }
func (TaskPlan) Public ¶
func (plan TaskPlan) Public() *json.RawMessage
type TaskRunConfig ¶
type TaskRunConfig struct { Path string `json:"path" yaml:"path"` Args []string `json:"args,omitempty" yaml:"args"` Dir string `json:"dir",omitempty" yaml:"dir"` // The user that the task will run as (defaults to whatever the docker image specifies) User string `json:"user,omitempty" yaml:"user,omitempty" mapstructure:"user"` }
type Team ¶
type Team struct { // ID is the team's ID ID int `json:"id,omitempty"` // Name is the team's name Name string `json:"name,omitempty"` BasicAuth *BasicAuth `json:"basic_auth,omitempty"` GitHubAuth *GitHubAuth `json:"github_auth,omitempty"` UAAAuth *UAAAuth `json:"uaa_auth,omitempty"` GenericOAuth *GenericOAuth `json:"genericoauth_auth,omitempty"` }
Team owns your pipelines
type TimeoutPlan ¶
func (TimeoutPlan) Public ¶
func (plan TimeoutPlan) Public() *json.RawMessage
type TryPlan ¶
type TryPlan struct {
Step Plan `json:"step"`
}
func (TryPlan) Public ¶
func (plan TryPlan) Public() *json.RawMessage
type UAAAuth ¶
type UAAAuth struct { ClientID string `json:"client_id,omitempty"` ClientSecret string `json:"client_secret,omitempty"` AuthURL string `json:"auth_url,omitempty"` TokenURL string `json:"token_url,omitempty"` CFSpaces []string `json:"cf_spaces,omitempty"` CFURL string `json:"cf_url,omitempty"` CFCACert string `json:"cf_ca_cert,omitempty"` }
type UAAAuthFlag ¶
type UAAAuthFlag struct { ClientID string `long:"client-id" description:"Application client ID for enabling UAA OAuth."` ClientSecret string `long:"client-secret" description:"Application client secret for enabling UAA OAuth."` AuthURL string `long:"auth-url" description:"UAA AuthURL endpoint."` TokenURL string `long:"token-url" description:"UAA TokenURL endpoint."` CFSpaces []string `long:"cf-space" description:"Space GUID for a CF space whose developers will have access."` CFURL string `long:"cf-url" description:"CF API endpoint."` CFCACert PathFlag `long:"cf-ca-cert" description:"Path to CF PEM-encoded CA certificate file."` }
func (*UAAAuthFlag) IsConfigured ¶
func (auth *UAAAuthFlag) IsConfigured() bool
func (*UAAAuthFlag) Validate ¶
func (auth *UAAAuthFlag) Validate() error
type VersionConfig ¶
type VersionConfig struct { Every bool `yaml:"every,omitempty" json:"every,omitempty"` Latest bool `yaml:"latest,omitempty" json:"latest,omitempty"` Pinned Version `yaml:"pinned,omitempty" json:"pinned,omitempty"` }
A VersionConfig represents the choice to include every version of a resource, the latest version of a resource, or a pinned (specific) one.
func (*VersionConfig) MarshalJSON ¶
func (c *VersionConfig) MarshalJSON() ([]byte, error)
func (*VersionConfig) MarshalYAML ¶
func (c *VersionConfig) MarshalYAML() (interface{}, error)
func (*VersionConfig) UnmarshalJSON ¶
func (c *VersionConfig) UnmarshalJSON(version []byte) error
func (*VersionConfig) UnmarshalYAML ¶
func (c *VersionConfig) UnmarshalYAML(unmarshal func(interface{}) error) error
type VersionedResource ¶
type Worker ¶
type Worker struct { // not garden_addr, for backwards-compatibility GardenAddr string `json:"addr"` BaggageclaimURL string `json:"baggageclaim_url"` HTTPProxyURL string `json:"http_proxy_url,omitempty"` HTTPSProxyURL string `json:"https_proxy_url,omitempty"` NoProxy string `json:"no_proxy,omitempty"` ActiveContainers int `json:"active_containers"` ResourceTypes []WorkerResourceType `json:"resource_types"` Platform string `json:"platform"` Tags []string `json:"tags"` Team string `json:"team"` Name string `json:"name"` StartTime int64 `json:"start_time"` }
type WorkerResourceType ¶
Source Files ¶
- auth.go
- auth_flags.go
- build.go
- build_inputs_outputs.go
- config.go
- container.go
- decode_hook.go
- errors.go
- event.go
- github_team_flag.go
- hijack_payload.go
- info.go
- job.go
- log_level.go
- pagination.go
- path_flag.go
- pipe.go
- pipeline.go
- plan.go
- plan_factory.go
- plan_traversal.go
- public_build_plan.go
- public_plan.go
- resource.go
- resource_types.go
- resourcecheck.go
- routes.go
- task.go
- team.go
- volume.go
- worker.go
Directories ¶
Path | Synopsis |
---|---|
buildserver/buildserverfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
containerserver/containerserverfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
jobserver/jobserverfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
pipes/pipesfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
resourceserver/resourceserverfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
teamserver/teamserverfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
volumeserver/volumeserverfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
workerserver/workerserverfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
authfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
github/githubfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
provider/providerfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
buildsfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
cmd
|
|
dbfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
migrations/migrationsfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
enginefakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
execfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
gc
|
|
buildreaper/buildreaperfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
containerkeepaliver/containerkeepaliverfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
dbgc/dbgcfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
lostandfound/lostandfoundfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
lockrunnerfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
metricfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
pipelinesfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
radarfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
resourcefakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
buildstarter/buildstarterfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
buildstarter/maxinflight/maxinflightfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
factory/factoryfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
inputmapper/inputconfig/inputconfigfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
inputmapper/inputmapperfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
schedulerfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
webfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
transport/transportfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |
workerfakes
This file was generated by counterfeiter
|
This file was generated by counterfeiter |