common

package
v12.4.0-rc1+incompatible Latest Latest
Warning

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

Go to latest
Published: Oct 8, 2019 License: MIT Imports: 43 Imported by: 93

Documentation

Index

Constants

View Source
const (
	PullPolicyAlways       = "always"
	PullPolicyNever        = "never"
	PullPolicyIfNotPresent = "if-not-present"
)
View Source
const (
	TestAlpineImage       = "alpine:3.7"
	TestAlpineNoRootImage = "registry.gitlab.com/gitlab-org/gitlab-runner/alpine-no-root:latest"
	TestDockerDindImage   = "docker:18-dind"
	TestDockerGitImage    = "docker:18-git"
)
View Source
const AfterScriptTimeout = 5 * time.Minute
View Source
const CheckInterval = 3 * time.Second
View Source
const DefaultArtifactDownloadAttempts = 1
View Source
const DefaultCacheRequestTimeout = 10
View Source
const DefaultExecTimeout = 1800
View Source
const DefaultGetSourcesAttempts = 1
View Source
const DefaultMetricsServerPort = 9252
View Source
const DefaultNetworkClientTimeout = 60 * time.Minute
View Source
const DefaultOutputLimit = 4 * 1024 * 1024 // in bytes
View Source
const DefaultRestoreCacheAttempts = 1
View Source
const DefaultSessionTimeout = 30 * time.Minute
View Source
const DefaultTimeout = 7200
View Source
const DefaultTracePatchLimit = 1024 * 1024 // in bytes
View Source
const DefaultWaitForServicesTimeout = 30
View Source
const (
	FilesLFSFile1LFSsize = int64(2097152)
)
View Source
const ForceTraceSentInterval = 30 * time.Second
View Source
const HealthCheckInterval = 3600
View Source
const HealthyChecks = 3
View Source
const KubernetesPollInterval = 3
View Source
const KubernetesPollTimeout = 180
View Source
const NotHealthyCheckInterval = 300
View Source
const PreparationRetries = 3
View Source
const ReloadConfigInterval = 3
View Source
const ShutdownTimeout = 30
View Source
const UpdateInterval = 3 * time.Second
View Source
const UpdateRetryInterval = 3 * time.Second
View Source
const WaitForBuildFinishTimeout = 5 * time.Minute

Variables

View Source
var BRANCH = "HEAD"
View Source
var BUILT = "unknown"
View Source
var NAME = "gitlab-runner"
View Source
var PreparationRetryInterval = 3 * time.Second
View Source
var REVISION = "HEAD"
View Source
var VERSION = "development version"

Functions

func GenerateShellScript

func GenerateShellScript(buildStage BuildStage, info ShellScriptInfo) (string, error)

func GetCommands

func GetCommands() []cli.Command

func GetDefaultShell

func GetDefaultShell() string

func GetExecutors

func GetExecutors() []string

func GetShells

func GetShells() []string

func MakeBuildError

func MakeBuildError(format string, args ...interface{}) error

func RegisterCommand

func RegisterCommand(command cli.Command)

func RegisterCommand2

func RegisterCommand2(name, usage string, data Commander, flags ...cli.Flag)

func RegisterExecutor

func RegisterExecutor(executor string, provider ExecutorProvider)

func RegisterShell

func RegisterShell(shell Shell)

Types

type AppVersionInfo added in v1.4.0

type AppVersionInfo struct {
	Name         string `json:"name"`
	Version      string `json:"version"`
	Revision     string `json:"revision"`
	Branch       string `json:"branch"`
	GOVersion    string `json:"go_version"`
	BuiltAt      string `json:"built_at"`
	OS           string `json:"os"`
	Architecture string `json:"architecture"`
}
var AppVersion AppVersionInfo

func (*AppVersionInfo) Extended added in v1.4.0

func (v *AppVersionInfo) Extended() string

func (*AppVersionInfo) Line added in v1.4.0

func (v *AppVersionInfo) Line() string

func (*AppVersionInfo) NewMetricsCollector added in v1.8.0

func (v *AppVersionInfo) NewMetricsCollector() *prometheus.GaugeVec

NewMetricsCollector returns a prometheus.Collector which represents current build information.

func (*AppVersionInfo) Printer added in v1.4.0

func (v *AppVersionInfo) Printer(c *cli.Context)

func (*AppVersionInfo) ShortLine added in v1.4.0

func (v *AppVersionInfo) ShortLine() string

func (*AppVersionInfo) UserAgent added in v1.4.0

func (v *AppVersionInfo) UserAgent() string

func (*AppVersionInfo) Variables

func (v *AppVersionInfo) Variables() JobVariables

type Artifact

type Artifact struct {
	Name      string         `json:"name"`
	Untracked bool           `json:"untracked"`
	Paths     ArtifactPaths  `json:"paths"`
	When      ArtifactWhen   `json:"when"`
	Type      string         `json:"artifact_type"`
	Format    ArtifactFormat `json:"artifact_format"`
	ExpireIn  string         `json:"expire_in"`
}

type ArtifactFormat

type ArtifactFormat string
const (
	ArtifactFormatDefault ArtifactFormat = ""
	ArtifactFormatZip     ArtifactFormat = "zip"
	ArtifactFormatGzip    ArtifactFormat = "gzip"
	ArtifactFormatRaw     ArtifactFormat = "raw"
)

type ArtifactPaths

type ArtifactPaths []string

type ArtifactWhen

type ArtifactWhen string
const (
	ArtifactWhenOnFailure ArtifactWhen = "on_failure"
	ArtifactWhenOnSuccess ArtifactWhen = "on_success"
	ArtifactWhenAlways    ArtifactWhen = "always"
)

func (ArtifactWhen) OnFailure

func (when ArtifactWhen) OnFailure() bool

func (ArtifactWhen) OnSuccess

func (when ArtifactWhen) OnSuccess() bool

type Artifacts

type Artifacts []Artifact

type ArtifactsOptions

type ArtifactsOptions struct {
	BaseName string
	ExpireIn string
	Format   ArtifactFormat
	Type     string
}

type Build

type Build struct {
	JobResponse `yaml:",inline"`

	SystemInterrupt  chan os.Signal `json:"-" yaml:"-"`
	RootDir          string         `json:"-" yaml:"-"`
	BuildDir         string         `json:"-" yaml:"-"`
	CacheDir         string         `json:"-" yaml:"-"`
	Hostname         string         `json:"-" yaml:"-"`
	Runner           *RunnerConfig  `json:"runner"`
	ExecutorData     ExecutorData
	ExecutorFeatures FeaturesInfo `json:"-" yaml:"-"`

	// Unique ID for all running builds on this runner
	RunnerID int `json:"runner_id"`

	// Unique ID for all running builds on this runner and this project
	ProjectRunnerID int `json:"project_runner_id"`

	CurrentStage BuildStage
	CurrentState BuildRuntimeState

	Session *session.Session
	// contains filtered or unexported fields
}

func NewBuild

func NewBuild(jobData JobResponse, runnerConfig *RunnerConfig, systemInterrupt chan os.Signal, executorData ExecutorData) (*Build, error)

func (*Build) CurrentExecutorStage

func (b *Build) CurrentExecutorStage() ExecutorStage

func (*Build) Duration

func (b *Build) Duration() time.Duration

func (*Build) FullProjectDir

func (b *Build) FullProjectDir() string

func (*Build) GetAllVariables

func (b *Build) GetAllVariables() JobVariables

func (*Build) GetBuildTimeout

func (b *Build) GetBuildTimeout() time.Duration

func (*Build) GetCITLSVariables

func (b *Build) GetCITLSVariables() JobVariables

func (*Build) GetCacheRequestTimeout

func (b *Build) GetCacheRequestTimeout() int

func (*Build) GetDefaultFeatureFlagsVariables

func (b *Build) GetDefaultFeatureFlagsVariables() JobVariables

func (*Build) GetDefaultVariables

func (b *Build) GetDefaultVariables() JobVariables

func (*Build) GetDockerAuthConfig added in v1.8.0

func (b *Build) GetDockerAuthConfig() string

func (*Build) GetDownloadArtifactsAttempts added in v1.9.0

func (b *Build) GetDownloadArtifactsAttempts() int

func (*Build) GetGetSourcesAttempts added in v1.9.0

func (b *Build) GetGetSourcesAttempts() int

func (*Build) GetGitCheckout

func (b *Build) GetGitCheckout() bool

func (*Build) GetGitCleanFlags

func (b *Build) GetGitCleanFlags() []string

func (*Build) GetGitStrategy added in v1.3.0

func (b *Build) GetGitStrategy() GitStrategy

func (*Build) GetGitTLSVariables

func (b *Build) GetGitTLSVariables() JobVariables

func (*Build) GetRemoteURL

func (b *Build) GetRemoteURL() string

GetRemoteURL checks if the default clone URL is overwritten by the runner configuration option: 'CloneURL'. If it is, we use that to create the clone URL.

func (*Build) GetRestoreCacheAttempts added in v1.9.0

func (b *Build) GetRestoreCacheAttempts() int

func (*Build) GetSharedEnvVariable

func (b *Build) GetSharedEnvVariable() JobVariable

func (*Build) GetSubmoduleStrategy added in v1.10.0

func (b *Build) GetSubmoduleStrategy() SubmoduleStrategy

func (*Build) GetTLSVariables

func (b *Build) GetTLSVariables(caFile, certFile, keyFile string) JobVariables

func (*Build) IsDebugTraceEnabled added in v1.7.0

func (b *Build) IsDebugTraceEnabled() bool

func (*Build) IsFeatureFlagOn

func (b *Build) IsFeatureFlagOn(name string) bool

func (*Build) IsLFSSmudgeDisabled

func (b *Build) IsLFSSmudgeDisabled() bool

func (*Build) IsSharedEnv

func (b *Build) IsSharedEnv() bool

func (*Build) Log added in v1.3.0

func (b *Build) Log() *logrus.Entry

func (*Build) ProjectSlug

func (b *Build) ProjectSlug() (string, error)

func (*Build) ProjectUniqueDir

func (b *Build) ProjectUniqueDir(sharedDir bool) string

func (*Build) ProjectUniqueName

func (b *Build) ProjectUniqueName() string

func (*Build) Run

func (b *Build) Run(globalConfig *Config, trace JobTrace) (err error)

func (*Build) StartBuild

func (b *Build) StartBuild(rootDir, cacheDir string, customBuildDirEnabled, sharedDir bool) error

func (*Build) String

func (b *Build) String() string

func (*Build) TmpProjectDir

func (b *Build) TmpProjectDir() string

type BuildError added in v1.4.0

type BuildError struct {
	Inner         error
	FailureReason JobFailureReason
}

func (*BuildError) Error added in v1.4.0

func (b *BuildError) Error() string

type BuildLogger added in v1.4.0

type BuildLogger struct {
	// contains filtered or unexported fields
}

func NewBuildLogger added in v1.4.0

func NewBuildLogger(log JobTrace, entry *logrus.Entry) BuildLogger

func (*BuildLogger) Debugln added in v1.4.0

func (e *BuildLogger) Debugln(args ...interface{})

func (*BuildLogger) Errorln added in v1.4.0

func (e *BuildLogger) Errorln(args ...interface{})

func (*BuildLogger) Infoln added in v1.4.0

func (e *BuildLogger) Infoln(args ...interface{})

func (*BuildLogger) Println added in v1.4.0

func (e *BuildLogger) Println(args ...interface{})

func (*BuildLogger) SendRawLog

func (e *BuildLogger) SendRawLog(args ...interface{})

func (*BuildLogger) SoftErrorln added in v1.4.0

func (e *BuildLogger) SoftErrorln(args ...interface{})

func (*BuildLogger) Warningln added in v1.4.0

func (e *BuildLogger) Warningln(args ...interface{})

func (*BuildLogger) WithFields

func (e *BuildLogger) WithFields(fields logrus.Fields) BuildLogger

func (*BuildLogger) WriterLevel

func (e *BuildLogger) WriterLevel(level logrus.Level) *io.PipeWriter

type BuildRuntimeState added in v1.9.0

type BuildRuntimeState string
const (
	BuildRunStatePending      BuildRuntimeState = "pending"
	BuildRunRuntimeRunning    BuildRuntimeState = "running"
	BuildRunRuntimeFinished   BuildRuntimeState = "finished"
	BuildRunRuntimeCanceled   BuildRuntimeState = "canceled"
	BuildRunRuntimeTerminated BuildRuntimeState = "terminated"
	BuildRunRuntimeTimedout   BuildRuntimeState = "timedout"
)

type BuildStage added in v1.9.0

type BuildStage string
const (
	BuildStagePrepareExecutor          BuildStage = "prepare_executor"
	BuildStagePrepare                  BuildStage = "prepare_script"
	BuildStageGetSources               BuildStage = "get_sources"
	BuildStageRestoreCache             BuildStage = "restore_cache"
	BuildStageDownloadArtifacts        BuildStage = "download_artifacts"
	BuildStageUserScript               BuildStage = "build_script"
	BuildStageAfterScript              BuildStage = "after_script"
	BuildStageArchiveCache             BuildStage = "archive_cache"
	BuildStageUploadOnSuccessArtifacts BuildStage = "upload_artifacts_on_success"
	BuildStageUploadOnFailureArtifacts BuildStage = "upload_artifacts_on_failure"
)

type Cache

type Cache struct {
	Key       string        `json:"key"`
	Untracked bool          `json:"untracked"`
	Policy    CachePolicy   `json:"policy"`
	Paths     ArtifactPaths `json:"paths"`
}

func (Cache) CheckPolicy

func (c Cache) CheckPolicy(wanted CachePolicy) (bool, error)

type CacheConfig

type CacheConfig struct {
	Type   string `toml:"Type,omitempty" long:"type" env:"CACHE_TYPE" description:"Select caching method"`
	Path   string `toml:"Path,omitempty" long:"path" env:"CACHE_PATH" description:"Name of the path to prepend to the cache URL"`
	Shared bool   `toml:"Shared,omitempty" long:"shared" env:"CACHE_SHARED" description:"Enable cache sharing between runners."`

	S3  *CacheS3Config  `toml:"s3,omitempty" json:"s3" namespace:"s3"`
	GCS *CacheGCSConfig `toml:"gcs,omitempty" json:"gcs" namespace:"gcs"`
}

func (*CacheConfig) GetPath

func (c *CacheConfig) GetPath() string

func (*CacheConfig) GetShared

func (c *CacheConfig) GetShared() bool

type CacheGCSConfig

type CacheGCSConfig struct {
	CacheGCSCredentials
	CredentialsFile string `` /* 169-byte string literal not displayed */
	BucketName      string `` /* 134-byte string literal not displayed */
}

type CacheGCSCredentials

type CacheGCSCredentials struct {
	AccessID   string `` /* 135-byte string literal not displayed */
	PrivateKey string `` /* 126-byte string literal not displayed */
}

type CachePolicy

type CachePolicy string
const (
	CachePolicyUndefined CachePolicy = ""
	CachePolicyPullPush  CachePolicy = "pull-push"
	CachePolicyPull      CachePolicy = "pull"
	CachePolicyPush      CachePolicy = "push"
)

type CacheS3Config

type CacheS3Config struct {
	ServerAddress  string `` /* 141-byte string literal not displayed */
	AccessKey      string `toml:"AccessKey,omitempty" long:"access-key" env:"CACHE_S3_ACCESS_KEY" description:"S3 Access Key"`
	SecretKey      string `toml:"SecretKey,omitempty" long:"secret-key" env:"CACHE_S3_SECRET_KEY" description:"S3 Secret Key"`
	BucketName     string `` /* 133-byte string literal not displayed */
	BucketLocation string `toml:"BucketLocation,omitempty" long:"bucket-location" env:"CACHE_S3_BUCKET_LOCATION" description:"Name of S3 region"`
	Insecure       bool   `toml:"Insecure,omitempty" long:"insecure" env:"CACHE_S3_INSECURE" description:"Use insecure mode (without https)"`
}

func (*CacheS3Config) ShouldUseIAMCredentials

func (c *CacheS3Config) ShouldUseIAMCredentials() bool

type Caches

type Caches []Cache

type Commander

type Commander interface {
	Execute(c *cli.Context)
}

type Config

type Config struct {
	ListenAddress string        `toml:"listen_address,omitempty" json:"listen_address"`
	SessionServer SessionServer `toml:"session_server,omitempty" json:"session_server"`

	Concurrent    int             `toml:"concurrent" json:"concurrent"`
	CheckInterval int             `toml:"check_interval" json:"check_interval" description:"Define active checking interval of jobs"`
	LogLevel      *string         `toml:"log_level" json:"log_level" description:"Define log level (one of: panic, fatal, error, warning, info, debug)"`
	LogFormat     *string         `toml:"log_format" json:"log_format" description:"Define log format (one of: runner, text, json)"`
	User          string          `toml:"user,omitempty" json:"user"`
	Runners       []*RunnerConfig `toml:"runners" json:"runners"`
	SentryDSN     *string         `toml:"sentry_dsn"`
	ModTime       time.Time       `toml:"-"`
	Loaded        bool            `toml:"-"`
}

func NewConfig

func NewConfig() *Config

func (*Config) GetCheckInterval added in v1.3.0

func (c *Config) GetCheckInterval() time.Duration

func (*Config) LoadConfig

func (c *Config) LoadConfig(configFile string) error

func (*Config) SaveConfig

func (c *Config) SaveConfig(configFile string) error

func (*Config) StatConfig

func (c *Config) StatConfig(configFile string) error

type Credentials

type Credentials struct {
	Type     string `json:"type"`
	URL      string `json:"url"`
	Username string `json:"username"`
	Password string `json:"password"`
}

type CustomBuildDir

type CustomBuildDir struct {
	Enabled bool `` /* 137-byte string literal not displayed */
}

type CustomConfig

type CustomConfig struct {
	ConfigExec        string   `` /* 175-byte string literal not displayed */
	ConfigArgs        []string `toml:"config_args,omitempty" json:"config_args" long:"config-args" description:"Arguments for the config executable"`
	ConfigExecTimeout *int     `` /* 184-byte string literal not displayed */

	PrepareExec        string   `` /* 143-byte string literal not displayed */
	PrepareArgs        []string `toml:"prepare_args,omitempty" json:"prepare_args" long:"prepare-args" description:"Arguments for the prepare executable"`
	PrepareExecTimeout *int     `` /* 189-byte string literal not displayed */

	RunExec string   `` /* 131-byte string literal not displayed */
	RunArgs []string `toml:"run_args,omitempty" json:"run_args" long:"run-args" description:"Arguments for the run executable"`

	CleanupExec        string   `` /* 153-byte string literal not displayed */
	CleanupArgs        []string `toml:"cleanup_args,omitempty" json:"cleanup_args" long:"cleanup-args" description:"Arguments for the cleanup executable"`
	CleanupExecTimeout *int     `` /* 189-byte string literal not displayed */

	GracefulKillTimeout *int `` /* 312-byte string literal not displayed */
	ForceKillTimeout    *int `` /* 309-byte string literal not displayed */
}

type Dependencies

type Dependencies []Dependency

type Dependency

type Dependency struct {
	ID            int                     `json:"id"`
	Token         string                  `json:"token"`
	Name          string                  `json:"name"`
	ArtifactsFile DependencyArtifactsFile `json:"artifacts_file"`
}

type DependencyArtifactsFile

type DependencyArtifactsFile struct {
	Filename string `json:"filename"`
	Size     int64  `json:"size"`
}

type DockerConfig

type DockerConfig struct {
	docker_helpers.DockerCredentials
	Hostname                   string            `toml:"hostname,omitempty" json:"hostname" long:"hostname" env:"DOCKER_HOSTNAME" description:"Custom container hostname"`
	Image                      string            `toml:"image" json:"image" long:"image" env:"DOCKER_IMAGE" description:"Docker image to be used"`
	Runtime                    string            `toml:"runtime,omitempty" json:"runtime" long:"runtime" env:"DOCKER_RUNTIME" description:"Docker runtime to be used"`
	Memory                     string            `` /* 175-byte string literal not displayed */
	MemorySwap                 string            `` /* 201-byte string literal not displayed */
	MemoryReservation          string            `` /* 213-byte string literal not displayed */
	CPUSetCPUs                 string            `` /* 159-byte string literal not displayed */
	CPUS                       string            `toml:"cpus,omitempty" json:"cpus" long:"cpus" env:"DOCKER_CPUS" description:"Number of CPUs"`
	DNS                        []string          `toml:"dns,omitempty" json:"dns" long:"dns" env:"DOCKER_DNS" description:"A list of DNS servers for the container to use"`
	DNSSearch                  []string          `` /* 130-byte string literal not displayed */
	Privileged                 bool              `` /* 138-byte string literal not displayed */
	DisableEntrypointOverwrite bool              `` /* 254-byte string literal not displayed */
	UsernsMode                 string            `toml:"userns_mode,omitempty" json:"userns_mode" long:"userns" env:"DOCKER_USERNS_MODE" description:"User namespace to use"`
	CapAdd                     []string          `toml:"cap_add" json:"cap_add" long:"cap-add" env:"DOCKER_CAP_ADD" description:"Add Linux capabilities"`
	CapDrop                    []string          `toml:"cap_drop" json:"cap_drop" long:"cap-drop" env:"DOCKER_CAP_DROP" description:"Drop Linux capabilities"`
	OomKillDisable             bool              `` /* 200-byte string literal not displayed */
	SecurityOpt                []string          `toml:"security_opt" json:"security_opt" long:"security-opt" env:"DOCKER_SECURITY_OPT" description:"Security Options"`
	Devices                    []string          `toml:"devices" json:"devices" long:"devices" env:"DOCKER_DEVICES" description:"Add a host device to the container"`
	DisableCache               bool              `` /* 142-byte string literal not displayed */
	Volumes                    []string          `` /* 284-byte string literal not displayed */
	VolumeDriver               string            `` /* 138-byte string literal not displayed */
	CacheDir                   string            `` /* 129-byte string literal not displayed */
	ExtraHosts                 []string          `` /* 137-byte string literal not displayed */
	VolumesFrom                []string          `` /* 161-byte string literal not displayed */
	NetworkMode                string            `` /* 143-byte string literal not displayed */
	Links                      []string          `toml:"links,omitempty" json:"links" long:"links" env:"DOCKER_LINKS" description:"Add link to another container"`
	Services                   []string          `` /* 136-byte string literal not displayed */
	WaitForServicesTimeout     int               `` /* 197-byte string literal not displayed */
	AllowedImages              []string          `` /* 142-byte string literal not displayed */
	AllowedServices            []string          `` /* 152-byte string literal not displayed */
	PullPolicy                 DockerPullPolicy  `` /* 154-byte string literal not displayed */
	ShmSize                    int64             `` /* 141-byte string literal not displayed */
	Tmpfs                      map[string]string `` /* 344-byte string literal not displayed */
	ServicesTmpfs              map[string]string `` /* 388-byte string literal not displayed */
	SysCtls                    DockerSysCtls     `` /* 178-byte string literal not displayed */
	HelperImage                string            `` /* 195-byte string literal not displayed */
}

func (*DockerConfig) GetMemory

func (c *DockerConfig) GetMemory() int64

func (*DockerConfig) GetMemoryReservation

func (c *DockerConfig) GetMemoryReservation() int64

func (*DockerConfig) GetMemorySwap

func (c *DockerConfig) GetMemorySwap() int64

func (*DockerConfig) GetNanoCPUs

func (c *DockerConfig) GetNanoCPUs() (int64, error)

func (*DockerConfig) GetOomKillDisable

func (c *DockerConfig) GetOomKillDisable() *bool

type DockerMachine

type DockerMachine struct {
	IdleCount      int      `long:"idle-nodes" env:"MACHINE_IDLE_COUNT" description:"Maximum idle machines"`
	IdleTime       int      `toml:"IdleTime,omitzero" long:"idle-time" env:"MACHINE_IDLE_TIME" description:"Minimum time after node can be destroyed"`
	MaxBuilds      int      `` /* 128-byte string literal not displayed */
	MachineDriver  string   `long:"machine-driver" env:"MACHINE_DRIVER" description:"The driver to use when creating machine"`
	MachineName    string   `long:"machine-name" env:"MACHINE_NAME" description:"The template for machine name (needs to include %s)"`
	MachineOptions []string `long:"machine-options" env:"MACHINE_OPTIONS" description:"Additional machine creation options"`

	OffPeakPeriods   []string `long:"off-peak-periods" env:"MACHINE_OFF_PEAK_PERIODS" description:"Time periods when the scheduler is in the OffPeak mode"`
	OffPeakTimezone  string   `long:"off-peak-timezone" env:"MACHINE_OFF_PEAK_TIMEZONE" description:"Timezone for the OffPeak periods (defaults to Local)"`
	OffPeakIdleCount int      `` /* 138-byte string literal not displayed */
	OffPeakIdleTime  int      `` /* 158-byte string literal not displayed */
	// contains filtered or unexported fields
}

func (*DockerMachine) CompileOffPeakPeriods added in v1.7.0

func (c *DockerMachine) CompileOffPeakPeriods() (err error)

func (*DockerMachine) GetIdleCount added in v1.7.0

func (c *DockerMachine) GetIdleCount() int

func (*DockerMachine) GetIdleTime added in v1.7.0

func (c *DockerMachine) GetIdleTime() int

type DockerPullPolicy

type DockerPullPolicy string

func (DockerPullPolicy) Get

Get returns one of the predefined values or returns an error if the value can't match the predefined

type DockerSysCtls

type DockerSysCtls map[string]string

type DownloadState

type DownloadState int
const (
	DownloadSucceeded DownloadState = iota
	DownloadForbidden
	DownloadFailed
	DownloadNotFound
)

type Executor

type Executor interface {
	Shell() *ShellScriptInfo
	Prepare(options ExecutorPrepareOptions) error
	Run(cmd ExecutorCommand) error
	Finish(err error)
	Cleanup()
	GetCurrentStage() ExecutorStage
	SetCurrentStage(stage ExecutorStage)
}

func NewExecutor

func NewExecutor(executor string) Executor

type ExecutorCommand added in v1.2.0

type ExecutorCommand struct {
	Script     string
	Stage      BuildStage
	Predefined bool
	Context    context.Context
}

type ExecutorData

type ExecutorData interface{}

type ExecutorPrepareOptions

type ExecutorPrepareOptions struct {
	Config  *RunnerConfig
	Build   *Build
	Trace   JobTrace
	User    string
	Context context.Context
}

type ExecutorProvider

type ExecutorProvider interface {
	CanCreate() bool
	Create() Executor
	Acquire(config *RunnerConfig) (ExecutorData, error)
	Release(config *RunnerConfig, data ExecutorData)
	GetFeatures(features *FeaturesInfo) error
	GetDefaultShell() string
}

func GetExecutor

func GetExecutor(executor string) ExecutorProvider

func GetExecutorProviders added in v1.9.0

func GetExecutorProviders() (providers []ExecutorProvider)

type ExecutorStage

type ExecutorStage string
const (
	ExecutorStageCreated ExecutorStage = "created"
	ExecutorStagePrepare ExecutorStage = "prepare"
	ExecutorStageFinish  ExecutorStage = "finish"
	ExecutorStageCleanup ExecutorStage = "cleanup"
)

type FailuresCollector

type FailuresCollector interface {
	RecordFailure(reason JobFailureReason, runnerDescription string)
}

type FeaturesInfo

type FeaturesInfo struct {
	Variables               bool `json:"variables"`
	Image                   bool `json:"image"`
	Services                bool `json:"services"`
	Artifacts               bool `json:"artifacts"`
	Cache                   bool `json:"cache"`
	Shared                  bool `json:"shared"`
	UploadMultipleArtifacts bool `json:"upload_multiple_artifacts"`
	UploadRawArtifacts      bool `json:"upload_raw_artifacts"`
	Session                 bool `json:"session"`
	Terminal                bool `json:"terminal"`
	Refspecs                bool `json:"refspecs"`
	Masking                 bool `json:"masking"`
	Proxy                   bool `json:"proxy"`
}

type GitInfo

type GitInfo struct {
	RepoURL   string         `json:"repo_url"`
	Ref       string         `json:"ref"`
	Sha       string         `json:"sha"`
	BeforeSha string         `json:"before_sha"`
	RefType   GitInfoRefType `json:"ref_type"`
	Refspecs  []string       `json:"refspecs"`
	Depth     int            `json:"depth"`
}

func GetGitInfo

func GetGitInfo(url string) GitInfo

func GetLFSGitInfo

func GetLFSGitInfo(url string) GitInfo

func GetSubmoduleLFSGitInfo

func GetSubmoduleLFSGitInfo(url string) GitInfo

type GitInfoRefType

type GitInfoRefType string
const (
	RefTypeBranch GitInfoRefType = "branch"
	RefTypeTag    GitInfoRefType = "tag"
)

type GitStrategy added in v1.3.0

type GitStrategy int
const (
	GitClone GitStrategy = iota
	GitFetch
	GitNone
)

type GitlabFeatures

type GitlabFeatures struct {
	TraceSections bool `json:"trace_sections"`
}

type Image

type Image struct {
	Name       string   `json:"name"`
	Alias      string   `json:"alias,omitempty"`
	Command    []string `json:"command,omitempty"`
	Entrypoint []string `json:"entrypoint,omitempty"`
	Ports      []Port   `json:"ports,omitempty"`
}

type JobCredentials

type JobCredentials struct {
	ID          int    `long:"id" env:"CI_JOB_ID" description:"The build ID to upload artifacts for"`
	Token       string `long:"token" env:"CI_JOB_TOKEN" required:"true" description:"Build token"`
	URL         string `long:"url" env:"CI_SERVER_URL" required:"true" description:"GitLab CI URL"`
	TLSCAFile   string `` /* 129-byte string literal not displayed */
	TLSCertFile string `` /* 141-byte string literal not displayed */
	TLSKeyFile  string `` /* 139-byte string literal not displayed */
}

func (*JobCredentials) GetTLSCAFile

func (j *JobCredentials) GetTLSCAFile() string

func (*JobCredentials) GetTLSCertFile

func (j *JobCredentials) GetTLSCertFile() string

func (*JobCredentials) GetTLSKeyFile

func (j *JobCredentials) GetTLSKeyFile() string

func (*JobCredentials) GetToken

func (j *JobCredentials) GetToken() string

func (*JobCredentials) GetURL

func (j *JobCredentials) GetURL() string

type JobFailureReason

type JobFailureReason string
const (
	NoneFailure         JobFailureReason = ""
	ScriptFailure       JobFailureReason = "script_failure"
	RunnerSystemFailure JobFailureReason = "runner_system_failure"
	JobExecutionTimeout JobFailureReason = "job_execution_timeout"
)

type JobInfo

type JobInfo struct {
	Name        string `json:"name"`
	Stage       string `json:"stage"`
	ProjectID   int    `json:"project_id"`
	ProjectName string `json:"project_name"`
}

type JobRequest

type JobRequest struct {
	Info       VersionInfo  `json:"info,omitempty"`
	Token      string       `json:"token,omitempty"`
	LastUpdate string       `json:"last_update,omitempty"`
	Session    *SessionInfo `json:"session,omitempty"`
}

type JobResponse

type JobResponse struct {
	ID            int            `json:"id"`
	Token         string         `json:"token"`
	AllowGitFetch bool           `json:"allow_git_fetch"`
	JobInfo       JobInfo        `json:"job_info"`
	GitInfo       GitInfo        `json:"git_info"`
	RunnerInfo    RunnerInfo     `json:"runner_info"`
	Variables     JobVariables   `json:"variables"`
	Steps         Steps          `json:"steps"`
	Image         Image          `json:"image"`
	Services      Services       `json:"services"`
	Artifacts     Artifacts      `json:"artifacts"`
	Cache         Caches         `json:"cache"`
	Credentials   []Credentials  `json:"credentials"`
	Dependencies  Dependencies   `json:"dependencies"`
	Features      GitlabFeatures `json:"features"`

	TLSCAChain  string `json:"-"`
	TLSAuthCert string `json:"-"`
	TLSAuthKey  string `json:"-"`
}

func GetFailedBuild added in v1.8.0

func GetFailedBuild() (JobResponse, error)

func GetLocalBuildResponse

func GetLocalBuildResponse(commands ...string) (JobResponse, error)

func GetLongRunningBuild added in v1.8.0

func GetLongRunningBuild() (JobResponse, error)

func GetMultilineBashBuild

func GetMultilineBashBuild() (JobResponse, error)

func GetMultilineBashBuildCmd

func GetMultilineBashBuildCmd() (JobResponse, error)

func GetMultilineBashBuildPowerShell

func GetMultilineBashBuildPowerShell() (JobResponse, error)

func GetRemoteBrokenTLSBuild

func GetRemoteBrokenTLSBuild() (JobResponse, error)

func GetRemoteBuildResponse

func GetRemoteBuildResponse(commands ...string) (JobResponse, error)

func GetRemoteFailedBuild added in v1.8.0

func GetRemoteFailedBuild() (JobResponse, error)

func GetRemoteGitLabComTLSBuild

func GetRemoteGitLabComTLSBuild() (JobResponse, error)

func GetRemoteLongRunningBuild added in v1.8.0

func GetRemoteLongRunningBuild() (JobResponse, error)

func GetRemoteSuccessfulBuild added in v1.8.0

func GetRemoteSuccessfulBuild() (JobResponse, error)

func GetRemoteSuccessfulBuildWithAfterScript

func GetRemoteSuccessfulBuildWithAfterScript() (JobResponse, error)

func GetRemoteSuccessfulBuildWithDumpedVariables

func GetRemoteSuccessfulBuildWithDumpedVariables() (JobResponse, error)

func GetRemoteSuccessfulLFSBuild

func GetRemoteSuccessfulLFSBuild() (JobResponse, error)

func GetSuccessfulBuild added in v1.8.0

func GetSuccessfulBuild() (JobResponse, error)

func (*JobResponse) RepoCleanURL

func (j *JobResponse) RepoCleanURL() string

type JobState

type JobState string
const (
	Pending JobState = "pending"
	Running JobState = "running"
	Failed  JobState = "failed"
	Success JobState = "success"
)

type JobTrace

type JobTrace interface {
	io.Writer
	Success()
	Fail(err error, failureReason JobFailureReason)
	SetCancelFunc(cancelFunc context.CancelFunc)
	SetFailuresCollector(fc FailuresCollector)
	SetMasked(values []string)
	IsStdout() bool
}

type JobVariable

type JobVariable struct {
	Key      string `json:"key"`
	Value    string `json:"value"`
	Public   bool   `json:"public"`
	Internal bool   `json:"-"`
	File     bool   `json:"file"`
	Masked   bool   `json:"masked"`
}

func ParseVariable

func ParseVariable(text string) (variable JobVariable, err error)

func (JobVariable) String

func (b JobVariable) String() string

type JobVariables

type JobVariables []JobVariable

func (JobVariables) Expand

func (b JobVariables) Expand() (variables JobVariables)

func (JobVariables) ExpandValue

func (b JobVariables) ExpandValue(value string) string

func (JobVariables) Get

func (b JobVariables) Get(key string) string

func (JobVariables) Masked

func (b JobVariables) Masked() (masked []string)

func (JobVariables) PublicOrInternal

func (b JobVariables) PublicOrInternal() (variables JobVariables)

func (JobVariables) StringList

func (b JobVariables) StringList() (variables []string)

type KubernetesConfig added in v1.6.0

type KubernetesConfig struct {
	Host                           string                       `` /* 151-byte string literal not displayed */
	CertFile                       string                       `` /* 145-byte string literal not displayed */
	KeyFile                        string                       `` /* 141-byte string literal not displayed */
	CAFile                         string                       `` /* 140-byte string literal not displayed */
	BearerTokenOverwriteAllowed    bool                         `` /* 248-byte string literal not displayed */
	BearerToken                    string                       `` /* 181-byte string literal not displayed */
	Image                          string                       `` /* 137-byte string literal not displayed */
	Namespace                      string                       `` /* 127-byte string literal not displayed */
	NamespaceOverwriteAllowed      string                       `` /* 220-byte string literal not displayed */
	Privileged                     bool                         `` /* 156-byte string literal not displayed */
	CPULimit                       string                       `` /* 146-byte string literal not displayed */
	MemoryLimit                    string                       `` /* 164-byte string literal not displayed */
	ServiceCPULimit                string                       `` /* 186-byte string literal not displayed */
	ServiceMemoryLimit             string                       `` /* 204-byte string literal not displayed */
	HelperCPULimit                 string                       `` /* 181-byte string literal not displayed */
	HelperMemoryLimit              string                       `` /* 199-byte string literal not displayed */
	CPURequest                     string                       `` /* 159-byte string literal not displayed */
	MemoryRequest                  string                       `` /* 174-byte string literal not displayed */
	ServiceCPURequest              string                       `` /* 199-byte string literal not displayed */
	ServiceMemoryRequest           string                       `` /* 213-byte string literal not displayed */
	HelperCPURequest               string                       `` /* 194-byte string literal not displayed */
	HelperMemoryRequest            string                       `` /* 208-byte string literal not displayed */
	PullPolicy                     KubernetesPullPolicy         `` /* 231-byte string literal not displayed */
	NodeSelector                   map[string]string            `` /* 270-byte string literal not displayed */
	NodeTolerations                map[string]string            `` /* 344-byte string literal not displayed */
	ImagePullSecrets               []string                     `` /* 205-byte string literal not displayed */
	HelperImage                    string                       `` /* 199-byte string literal not displayed */
	TerminationGracePeriodSeconds  int64                        `` /* 330-byte string literal not displayed */
	PollInterval                   int                          `` /* 224-byte string literal not displayed */
	PollTimeout                    int                          `` /* 325-byte string literal not displayed */
	PodLabels                      map[string]string            `` /* 268-byte string literal not displayed */
	ServiceAccount                 string                       `` /* 195-byte string literal not displayed */
	ServiceAccountOverwriteAllowed string                       `` /* 240-byte string literal not displayed */
	PodAnnotations                 map[string]string            `` /* 296-byte string literal not displayed */
	PodAnnotationsOverwriteAllowed string                       `` /* 243-byte string literal not displayed */
	PodSecurityContext             KubernetesPodSecurityContext `` /* 130-byte string literal not displayed */
	Volumes                        KubernetesVolumes            `toml:"volumes"`
}

func (*KubernetesConfig) GetNodeTolerations

func (c *KubernetesConfig) GetNodeTolerations() []api.Toleration

func (*KubernetesConfig) GetPodSecurityContext

func (c *KubernetesConfig) GetPodSecurityContext() *api.PodSecurityContext

func (*KubernetesConfig) GetPollAttempts added in v1.10.0

func (c *KubernetesConfig) GetPollAttempts() int

func (*KubernetesConfig) GetPollInterval added in v1.10.0

func (c *KubernetesConfig) GetPollInterval() int

type KubernetesConfigMap

type KubernetesConfigMap struct {
	Name      string            `toml:"name" json:"name" description:"The name of the volume and ConfigMap to use"`
	MountPath string            `toml:"mount_path" description:"Path where volume should be mounted inside of container"`
	ReadOnly  bool              `toml:"read_only,omitempty" description:"If this volume should be mounted read only"`
	Items     map[string]string `toml:"items,omitempty" description:"Key-to-path mapping for keys from the config map that should be used."`
}

type KubernetesEmptyDir

type KubernetesEmptyDir struct {
	Name      string `toml:"name" json:"name" description:"The name of the volume and EmptyDir to use"`
	MountPath string `toml:"mount_path" description:"Path where volume should be mounted inside of container"`
	Medium    string `toml:"medium,omitempty" description:"Set to 'Memory' to have a tmpfs"`
}

type KubernetesHostPath

type KubernetesHostPath struct {
	Name      string `toml:"name" json:"name" description:"The name of the volume"`
	MountPath string `toml:"mount_path" description:"Path where volume should be mounted inside of container"`
	ReadOnly  bool   `toml:"read_only,omitempty" description:"If this volume should be mounted read only"`
	HostPath  string `toml:"host_path,omitempty" description:"Path from the host that should be mounted as a volume"`
}

type KubernetesPVC

type KubernetesPVC struct {
	Name      string `toml:"name" json:"name" description:"The name of the volume and PVC to use"`
	MountPath string `toml:"mount_path" description:"Path where volume should be mounted inside of container"`
	ReadOnly  bool   `toml:"read_only,omitempty" description:"If this volume should be mounted read only"`
}

type KubernetesPodSecurityContext

type KubernetesPodSecurityContext struct {
	FSGroup            *int64  `` /* 171-byte string literal not displayed */
	RunAsGroup         *int64  `` /* 169-byte string literal not displayed */
	RunAsNonRoot       *bool   `` /* 180-byte string literal not displayed */
	RunAsUser          *int64  `` /* 166-byte string literal not displayed */
	SupplementalGroups []int64 `` /* 189-byte string literal not displayed */
}

type KubernetesPullPolicy added in v1.8.0

type KubernetesPullPolicy string

func (KubernetesPullPolicy) Get added in v1.8.0

Get returns one of the predefined values in kubernetes notation or returns an error if the value can't match the predefined

type KubernetesSecret

type KubernetesSecret struct {
	Name      string            `toml:"name" json:"name" description:"The name of the volume and Secret to use"`
	MountPath string            `toml:"mount_path" description:"Path where volume should be mounted inside of container"`
	ReadOnly  bool              `toml:"read_only,omitempty" description:"If this volume should be mounted read only"`
	Items     map[string]string `toml:"items,omitempty" description:"Key-to-path mapping for keys from the secret that should be used."`
}

type KubernetesVolumes

type KubernetesVolumes struct {
	HostPaths  []KubernetesHostPath  `toml:"host_path" description:"The host paths which will be mounted"`
	PVCs       []KubernetesPVC       `toml:"pvc" description:"The persistent volume claims that will be mounted"`
	ConfigMaps []KubernetesConfigMap `toml:"config_map" description:"The config maps which will be mounted as volumes"`
	Secrets    []KubernetesSecret    `toml:"secret" description:"The secret maps which will be mounted"`
	EmptyDirs  []KubernetesEmptyDir  `toml:"empty_dir" description:"The empty dirs which will be mounted"`
}

type MockCommander added in v1.5.0

type MockCommander struct {
	mock.Mock
}

MockCommander is an autogenerated mock type for the Commander type

func (*MockCommander) Execute added in v1.5.0

func (_m *MockCommander) Execute(c *cli.Context)

Execute provides a mock function with given fields: c

type MockExecutor added in v1.5.0

type MockExecutor struct {
	mock.Mock
}

MockExecutor is an autogenerated mock type for the Executor type

func (*MockExecutor) Cleanup added in v1.5.0

func (_m *MockExecutor) Cleanup()

Cleanup provides a mock function with given fields:

func (*MockExecutor) Finish added in v1.5.0

func (_m *MockExecutor) Finish(err error)

Finish provides a mock function with given fields: err

func (*MockExecutor) GetCurrentStage

func (_m *MockExecutor) GetCurrentStage() ExecutorStage

GetCurrentStage provides a mock function with given fields:

func (*MockExecutor) Prepare added in v1.5.0

func (_m *MockExecutor) Prepare(options ExecutorPrepareOptions) error

Prepare provides a mock function with given fields: options

func (*MockExecutor) Run added in v1.5.0

func (_m *MockExecutor) Run(cmd ExecutorCommand) error

Run provides a mock function with given fields: cmd

func (*MockExecutor) SetCurrentStage

func (_m *MockExecutor) SetCurrentStage(stage ExecutorStage)

SetCurrentStage provides a mock function with given fields: stage

func (*MockExecutor) Shell added in v1.5.0

func (_m *MockExecutor) Shell() *ShellScriptInfo

Shell provides a mock function with given fields:

type MockExecutorData added in v1.5.0

type MockExecutorData struct {
	mock.Mock
}

MockExecutorData is an autogenerated mock type for the ExecutorData type

type MockExecutorProvider added in v1.5.0

type MockExecutorProvider struct {
	mock.Mock
}

MockExecutorProvider is an autogenerated mock type for the ExecutorProvider type

func (*MockExecutorProvider) Acquire added in v1.5.0

func (_m *MockExecutorProvider) Acquire(config *RunnerConfig) (ExecutorData, error)

Acquire provides a mock function with given fields: config

func (*MockExecutorProvider) CanCreate added in v1.5.0

func (_m *MockExecutorProvider) CanCreate() bool

CanCreate provides a mock function with given fields:

func (*MockExecutorProvider) Create added in v1.5.0

func (_m *MockExecutorProvider) Create() Executor

Create provides a mock function with given fields:

func (*MockExecutorProvider) GetDefaultShell

func (_m *MockExecutorProvider) GetDefaultShell() string

GetDefaultShell provides a mock function with given fields:

func (*MockExecutorProvider) GetFeatures added in v1.5.0

func (_m *MockExecutorProvider) GetFeatures(features *FeaturesInfo) error

GetFeatures provides a mock function with given fields: features

func (*MockExecutorProvider) Release added in v1.5.0

func (_m *MockExecutorProvider) Release(config *RunnerConfig, data ExecutorData)

Release provides a mock function with given fields: config, data

type MockFailuresCollector

type MockFailuresCollector struct {
	mock.Mock
}

MockFailuresCollector is an autogenerated mock type for the FailuresCollector type

func (*MockFailuresCollector) RecordFailure

func (_m *MockFailuresCollector) RecordFailure(reason JobFailureReason, runnerDescription string)

RecordFailure provides a mock function with given fields: reason, runnerDescription

type MockJobTrace

type MockJobTrace struct {
	mock.Mock
}

MockJobTrace is an autogenerated mock type for the JobTrace type

func (*MockJobTrace) Fail

func (_m *MockJobTrace) Fail(err error, failureReason JobFailureReason)

Fail provides a mock function with given fields: err, failureReason

func (*MockJobTrace) IsStdout

func (_m *MockJobTrace) IsStdout() bool

IsStdout provides a mock function with given fields:

func (*MockJobTrace) SetCancelFunc

func (_m *MockJobTrace) SetCancelFunc(cancelFunc context.CancelFunc)

SetCancelFunc provides a mock function with given fields: cancelFunc

func (*MockJobTrace) SetFailuresCollector

func (_m *MockJobTrace) SetFailuresCollector(fc FailuresCollector)

SetFailuresCollector provides a mock function with given fields: fc

func (*MockJobTrace) SetMasked

func (_m *MockJobTrace) SetMasked(values []string)

SetMasked provides a mock function with given fields: values

func (*MockJobTrace) Success

func (_m *MockJobTrace) Success()

Success provides a mock function with given fields:

func (*MockJobTrace) Write

func (_m *MockJobTrace) Write(p []byte) (int, error)

Write provides a mock function with given fields: p

type MockNetwork added in v1.5.0

type MockNetwork struct {
	mock.Mock
}

MockNetwork is an autogenerated mock type for the Network type

func (*MockNetwork) DownloadArtifacts added in v1.5.0

func (_m *MockNetwork) DownloadArtifacts(config JobCredentials, artifactsFile string) DownloadState

DownloadArtifacts provides a mock function with given fields: config, artifactsFile

func (*MockNetwork) PatchTrace added in v1.5.0

func (_m *MockNetwork) PatchTrace(config RunnerConfig, jobCredentials *JobCredentials, content []byte, startOffset int) (int, UpdateState)

PatchTrace provides a mock function with given fields: config, jobCredentials, content, startOffset

func (*MockNetwork) ProcessJob

func (_m *MockNetwork) ProcessJob(config RunnerConfig, buildCredentials *JobCredentials) (JobTrace, error)

ProcessJob provides a mock function with given fields: config, buildCredentials

func (*MockNetwork) RegisterRunner added in v1.5.0

func (_m *MockNetwork) RegisterRunner(config RunnerCredentials, parameters RegisterRunnerParameters) *RegisterRunnerResponse

RegisterRunner provides a mock function with given fields: config, parameters

func (*MockNetwork) RequestJob

func (_m *MockNetwork) RequestJob(config RunnerConfig, sessionInfo *SessionInfo) (*JobResponse, bool)

RequestJob provides a mock function with given fields: config, sessionInfo

func (*MockNetwork) UnregisterRunner

func (_m *MockNetwork) UnregisterRunner(config RunnerCredentials) bool

UnregisterRunner provides a mock function with given fields: config

func (*MockNetwork) UpdateJob

func (_m *MockNetwork) UpdateJob(config RunnerConfig, jobCredentials *JobCredentials, jobInfo UpdateJobInfo) UpdateState

UpdateJob provides a mock function with given fields: config, jobCredentials, jobInfo

func (*MockNetwork) UploadRawArtifacts added in v1.5.0

func (_m *MockNetwork) UploadRawArtifacts(config JobCredentials, reader io.Reader, options ArtifactsOptions) UploadState

UploadRawArtifacts provides a mock function with given fields: config, reader, options

func (*MockNetwork) VerifyRunner added in v1.5.0

func (_m *MockNetwork) VerifyRunner(config RunnerCredentials) bool

VerifyRunner provides a mock function with given fields: config

type MockShell added in v1.5.0

type MockShell struct {
	mock.Mock
}

MockShell is an autogenerated mock type for the Shell type

func (*MockShell) GenerateScript added in v1.5.0

func (_m *MockShell) GenerateScript(buildStage BuildStage, info ShellScriptInfo) (string, error)

GenerateScript provides a mock function with given fields: buildStage, info

func (*MockShell) GetConfiguration added in v1.5.0

func (_m *MockShell) GetConfiguration(info ShellScriptInfo) (*ShellConfiguration, error)

GetConfiguration provides a mock function with given fields: info

func (*MockShell) GetFeatures added in v1.5.0

func (_m *MockShell) GetFeatures(features *FeaturesInfo)

GetFeatures provides a mock function with given fields: features

func (*MockShell) GetName added in v1.5.0

func (_m *MockShell) GetName() string

GetName provides a mock function with given fields:

func (*MockShell) IsDefault added in v1.5.0

func (_m *MockShell) IsDefault() bool

IsDefault provides a mock function with given fields:

type Network

type Network interface {
	RegisterRunner(config RunnerCredentials, parameters RegisterRunnerParameters) *RegisterRunnerResponse
	VerifyRunner(config RunnerCredentials) bool
	UnregisterRunner(config RunnerCredentials) bool
	RequestJob(config RunnerConfig, sessionInfo *SessionInfo) (*JobResponse, bool)
	UpdateJob(config RunnerConfig, jobCredentials *JobCredentials, jobInfo UpdateJobInfo) UpdateState
	PatchTrace(config RunnerConfig, jobCredentials *JobCredentials, content []byte, startOffset int) (int, UpdateState)
	DownloadArtifacts(config JobCredentials, artifactsFile string) DownloadState
	UploadRawArtifacts(config JobCredentials, reader io.Reader, options ArtifactsOptions) UploadState
	ProcessJob(config RunnerConfig, buildCredentials *JobCredentials) (JobTrace, error)
}

type ParallelsConfig

type ParallelsConfig struct {
	BaseName         string `toml:"base_name" json:"base_name" long:"base-name" env:"PARALLELS_BASE_NAME" description:"VM name to be used"`
	TemplateName     string `` /* 142-byte string literal not displayed */
	DisableSnapshots bool   `` /* 174-byte string literal not displayed */
	TimeServer       string `` /* 176-byte string literal not displayed */
}

type Port

type Port struct {
	Number   int    `json:"number,omitempty"`
	Protocol string `json:"protocol,omitempty"`
	Name     string `json:"name,omitempty"`
}

type RegisterRunnerParameters

type RegisterRunnerParameters struct {
	Description    string `json:"description,omitempty"`
	Tags           string `json:"tag_list,omitempty"`
	RunUntagged    bool   `json:"run_untagged"`
	Locked         bool   `json:"locked"`
	AccessLevel    string `json:"access_level,omitempty"`
	MaximumTimeout int    `json:"maximum_timeout,omitempty"`
	Active         bool   `json:"active"`
}

type RegisterRunnerRequest

type RegisterRunnerRequest struct {
	RegisterRunnerParameters
	Info  VersionInfo `json:"info,omitempty"`
	Token string      `json:"token,omitempty"`
}

type RegisterRunnerResponse

type RegisterRunnerResponse struct {
	Token string `json:"token,omitempty"`
}

type RunnerConfig

type RunnerConfig struct {
	Name               string `toml:"name" json:"name" short:"name" long:"description" env:"RUNNER_NAME" description:"Runner name"`
	Limit              int    `` /* 130-byte string literal not displayed */
	OutputLimit        int    `` /* 126-byte string literal not displayed */
	RequestConcurrency int    `` /* 146-byte string literal not displayed */

	RunnerCredentials
	RunnerSettings
}

func (*RunnerConfig) DeepCopy

func (c *RunnerConfig) DeepCopy() (*RunnerConfig, error)

DeepCopy attempts to make a deep clone of the object

func (*RunnerConfig) GetRequestConcurrency added in v1.10.8

func (c *RunnerConfig) GetRequestConcurrency() int

func (*RunnerConfig) GetVariables

func (c *RunnerConfig) GetVariables() JobVariables

func (*RunnerConfig) String

func (c *RunnerConfig) String() string

type RunnerCredentials

type RunnerCredentials struct {
	URL         string `toml:"url" json:"url" short:"u" long:"url" env:"CI_SERVER_URL" required:"true" description:"Runner URL"`
	Token       string `toml:"token" json:"token" short:"t" long:"token" env:"CI_SERVER_TOKEN" required:"true" description:"Runner token"`
	TLSCAFile   string `` /* 177-byte string literal not displayed */
	TLSCertFile string `` /* 181-byte string literal not displayed */
	TLSKeyFile  string `` /* 177-byte string literal not displayed */
}

func (*RunnerCredentials) GetTLSCAFile

func (c *RunnerCredentials) GetTLSCAFile() string

func (*RunnerCredentials) GetTLSCertFile

func (c *RunnerCredentials) GetTLSCertFile() string

func (*RunnerCredentials) GetTLSKeyFile

func (c *RunnerCredentials) GetTLSKeyFile() string

func (*RunnerCredentials) GetToken

func (c *RunnerCredentials) GetToken() string

func (*RunnerCredentials) GetURL

func (c *RunnerCredentials) GetURL() string

func (*RunnerCredentials) Log

func (c *RunnerCredentials) Log() *logrus.Entry

func (*RunnerCredentials) SameAs

func (c *RunnerCredentials) SameAs(other *RunnerCredentials) bool

func (*RunnerCredentials) ShortDescription

func (c *RunnerCredentials) ShortDescription() string

func (*RunnerCredentials) UniqueID

func (c *RunnerCredentials) UniqueID() string

type RunnerInfo

type RunnerInfo struct {
	Timeout int `json:"timeout"`
}

type RunnerSettings

type RunnerSettings struct {
	Executor  string `` /* 140-byte string literal not displayed */
	BuildsDir string `` /* 135-byte string literal not displayed */
	CacheDir  string `` /* 135-byte string literal not displayed */
	CloneURL  string `` /* 151-byte string literal not displayed */

	Environment     []string `` /* 148-byte string literal not displayed */
	PreCloneScript  string   `` /* 187-byte string literal not displayed */
	PreBuildScript  string   `` /* 214-byte string literal not displayed */
	PostBuildScript string   `` /* 220-byte string literal not displayed */

	DebugTraceDisabled bool `` /* 230-byte string literal not displayed */

	Shell string `toml:"shell,omitempty" json:"shell" long:"shell" env:"RUNNER_SHELL" description:"Select bash, cmd or powershell"`

	CustomBuildDir *CustomBuildDir   `toml:"custom_build_dir,omitempty" json:"custom_build_dir" group:"custom build dir configuration" namespace:"custom_build_dir"`
	SSH            *ssh.Config       `toml:"ssh,omitempty" json:"ssh" group:"ssh executor" namespace:"ssh"`
	Docker         *DockerConfig     `toml:"docker,omitempty" json:"docker" group:"docker executor" namespace:"docker"`
	Parallels      *ParallelsConfig  `toml:"parallels,omitempty" json:"parallels" group:"parallels executor" namespace:"parallels"`
	VirtualBox     *VirtualBoxConfig `toml:"virtualbox,omitempty" json:"virtualbox" group:"virtualbox executor" namespace:"virtualbox"`
	Cache          *CacheConfig      `toml:"cache,omitempty" json:"cache" group:"cache configuration" namespace:"cache"`
	Machine        *DockerMachine    `toml:"machine,omitempty" json:"machine" group:"docker machine provider" namespace:"machine"`
	Kubernetes     *KubernetesConfig `toml:"kubernetes,omitempty" json:"kubernetes" group:"kubernetes executor" namespace:"kubernetes"`
	Custom         *CustomConfig     `toml:"custom,omitempty" json:"custom" group:"custom executor" namespace:"custom"`
}

type Services

type Services []Image

type SessionInfo

type SessionInfo struct {
	URL           string `json:"url,omitempty"`
	Certificate   string `json:"certificate,omitempty"`
	Authorization string `json:"authorization,omitempty"`
}

type SessionServer

type SessionServer struct {
	ListenAddress    string `toml:"listen_address,omitempty" json:"listen_address" description:"Address that the runner will communicate directly with"`
	AdvertiseAddress string `` /* 150-byte string literal not displayed */
	SessionTimeout   int    `` /* 147-byte string literal not displayed */
}

func (*SessionServer) GetSessionTimeout

func (c *SessionServer) GetSessionTimeout() time.Duration

type Shell

type Shell interface {
	GetName() string
	GetFeatures(features *FeaturesInfo)
	IsDefault() bool

	GetConfiguration(info ShellScriptInfo) (*ShellConfiguration, error)
	GenerateScript(buildStage BuildStage, info ShellScriptInfo) (string, error)
}

func GetShell

func GetShell(shell string) Shell

type ShellConfiguration added in v1.3.0

type ShellConfiguration struct {
	Environment   []string
	DockerCommand []string
	Command       string
	Arguments     []string
	PassFile      bool
	Extension     string
}

func GetShellConfiguration added in v1.3.0

func GetShellConfiguration(info ShellScriptInfo) (*ShellConfiguration, error)

func (*ShellConfiguration) GetCommandWithArguments added in v1.3.0

func (s *ShellConfiguration) GetCommandWithArguments() []string

func (*ShellConfiguration) String added in v1.3.0

func (s *ShellConfiguration) String() string

type ShellScriptInfo

type ShellScriptInfo struct {
	Shell           string
	Build           *Build
	Type            ShellType
	User            string
	RunnerCommand   string
	PreCloneScript  string
	PreBuildScript  string
	PostBuildScript string
}

type ShellType

type ShellType int
const (
	NormalShell ShellType = iota
	LoginShell
)

type Step

type Step struct {
	Name         StepName   `json:"name"`
	Script       StepScript `json:"script"`
	Timeout      int        `json:"timeout"`
	When         StepWhen   `json:"when"`
	AllowFailure bool       `json:"allow_failure"`
}

type StepName

type StepName string
const (
	StepNameScript      StepName = "script"
	StepNameAfterScript StepName = "after_script"
)

type StepScript

type StepScript []string

type StepWhen

type StepWhen string
const (
	StepWhenOnFailure StepWhen = "on_failure"
	StepWhenOnSuccess StepWhen = "on_success"
	StepWhenAlways    StepWhen = "always"
)

type Steps

type Steps []Step

type SubmoduleStrategy added in v1.10.0

type SubmoduleStrategy int
const (
	SubmoduleInvalid SubmoduleStrategy = iota
	SubmoduleNone
	SubmoduleNormal
	SubmoduleRecursive
)

type Trace added in v1.4.0

type Trace struct {
	Writer     io.Writer
	CancelFunc context.CancelFunc
	// contains filtered or unexported fields
}

func (*Trace) Fail added in v1.4.0

func (s *Trace) Fail(err error, failureReason JobFailureReason)

func (*Trace) IsStdout added in v1.4.0

func (s *Trace) IsStdout() bool

func (*Trace) SetCancelFunc

func (s *Trace) SetCancelFunc(cancelFunc context.CancelFunc)

func (*Trace) SetFailuresCollector

func (s *Trace) SetFailuresCollector(fc FailuresCollector)

func (*Trace) SetMasked

func (s *Trace) SetMasked(values []string)

func (*Trace) Success added in v1.4.0

func (s *Trace) Success()

func (*Trace) Write added in v1.4.0

func (s *Trace) Write(p []byte) (n int, err error)

type UnregisterRunnerRequest

type UnregisterRunnerRequest struct {
	Token string `json:"token,omitempty"`
}

type UpdateJobInfo

type UpdateJobInfo struct {
	ID            int
	State         JobState
	FailureReason JobFailureReason
}

type UpdateJobRequest

type UpdateJobRequest struct {
	Info          VersionInfo      `json:"info,omitempty"`
	Token         string           `json:"token,omitempty"`
	State         JobState         `json:"state,omitempty"`
	FailureReason JobFailureReason `json:"failure_reason,omitempty"`
}

type UpdateState

type UpdateState int
const (
	UpdateSucceeded UpdateState = iota
	UpdateNotFound
	UpdateAbort
	UpdateFailed
	UpdateRangeMismatch
)

type UploadState

type UploadState int
const (
	UploadSucceeded UploadState = iota
	UploadTooLarge
	UploadForbidden
	UploadFailed
)

type VerifyRunnerRequest

type VerifyRunnerRequest struct {
	Token string `json:"token,omitempty"`
}

type VersionInfo

type VersionInfo struct {
	Name         string       `json:"name,omitempty"`
	Version      string       `json:"version,omitempty"`
	Revision     string       `json:"revision,omitempty"`
	Platform     string       `json:"platform,omitempty"`
	Architecture string       `json:"architecture,omitempty"`
	Executor     string       `json:"executor,omitempty"`
	Shell        string       `json:"shell,omitempty"`
	Features     FeaturesInfo `json:"features"`
}

type VirtualBoxConfig

type VirtualBoxConfig struct {
	BaseName         string `toml:"base_name" json:"base_name" long:"base-name" env:"VIRTUALBOX_BASE_NAME" description:"VM name to be used"`
	BaseSnapshot     string `` /* 165-byte string literal not displayed */
	DisableSnapshots bool   `` /* 175-byte string literal not displayed */
}

Jump to

Keyboard shortcuts

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