common

package
v1.11.5 Latest Latest
Warning

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

Go to latest
Published: Jul 4, 2017 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BuildRunStatePending      BuildRuntimeState = "pending"
	BuildRunRuntimeRunning                      = "running"
	BuildRunRuntimeFinished                     = "finished"
	BuildRunRuntimeCanceled                     = "canceled"
	BuildRunRuntimeTerminated                   = "terminated"
	BuildRunRuntimeTimedout                     = "timedout"
)
View Source
const (
	BuildStagePrepare           BuildStage = "prepare_script"
	BuildStageGetSources                   = "get_sources"
	BuildStageRestoreCache                 = "restore_cache"
	BuildStageDownloadArtifacts            = "download_artifacts"
	BuildStageUserScript                   = "build_script"
	BuildStageAfterScript                  = "after_script"
	BuildStageArchiveCache                 = "archive_cache"
	BuildStageUploadArtifacts              = "upload_artifacts"
)
View Source
const (
	PullPolicyAlways       = "always"
	PullPolicyNever        = "never"
	PullPolicyIfNotPresent = "if-not-present"
)
View Source
const (
	Pending BuildState = "pending"
	Running            = "running"
	Failed             = "failed"
	Success            = "success"
)
View Source
const CheckInterval = 3 * time.Second
View Source
const DefaultArtifactDownloadAttempts = 1
View Source
const DefaultExecTimeout = 1800
View Source
const DefaultGetSourcesAttempts = 1
View Source
const DefaultOutputLimit = 4096 // 4MB in kilobytes
View Source
const DefaultRestoreCacheAttempts = 1
View Source
const DefaultTimeout = 7200
View Source
const DefaultWaitForServicesTimeout = 30
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

Variables

View Source
var BRANCH = "HEAD"
View Source
var BUILT = "now"
View Source
var NAME = "gitlab-ci-multi-runner"
View Source
var PreparationRetryInterval = 3 * time.Second
View Source
var REVISION = "HEAD"
View Source
var VERSION = "dev"

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 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      time.Time `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

type Build

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

	Trace           BuildTrace
	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

	// 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
}

func (*Build) FullProjectDir

func (b *Build) FullProjectDir() string

func (*Build) GetAllVariables

func (b *Build) GetAllVariables() (variables BuildVariables)

func (*Build) GetDefaultVariables

func (b *Build) GetDefaultVariables() BuildVariables

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) GetGitDepth added in v1.3.0

func (b *Build) GetGitDepth() string

func (*Build) GetGitStrategy added in v1.3.0

func (b *Build) GetGitStrategy() GitStrategy

func (*Build) GetRestoreCacheAttempts added in v1.9.0

func (b *Build) GetRestoreCacheAttempts() int

func (*Build) GetSubmoduleStrategy added in v1.10.0

func (b *Build) GetSubmoduleStrategy() SubmoduleStrategy

func (*Build) IsDebugTraceEnabled added in v1.7.0

func (b *Build) IsDebugTraceEnabled() 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 BuildTrace) (err error)

func (*Build) StartBuild

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

func (*Build) String

func (b *Build) String() string

type BuildArtifacts

type BuildArtifacts struct {
	Filename string `json:"filename,omitempty"`
	Size     int64  `json:"size,omitempty"`
}

type BuildCredentials

type BuildCredentials struct {
	ID        int    `long:"id" env:"CI_BUILD_ID" description:"The build ID to upload artifacts for"`
	Token     string `long:"token" env:"CI_BUILD_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 */
}

type BuildError added in v1.4.0

type BuildError struct {
	Inner error
}

func (*BuildError) Error added in v1.4.0

func (b *BuildError) Error() string

type BuildInfo

type BuildInfo struct {
	ID        int             `json:"id,omitempty"`
	Sha       string          `json:"sha,omitempty"`
	RefName   string          `json:"ref,omitempty"`
	Token     string          `json:"token"`
	Name      string          `json:"name"`
	Stage     string          `json:"stage"`
	Tag       bool            `json:"tag"`
	Artifacts *BuildArtifacts `json:"artifacts_file"`
}

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 BuildTrace, 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) 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{})

type BuildOptions

type BuildOptions map[string]interface{}

func (*BuildOptions) Decode

func (m *BuildOptions) Decode(result interface{}, keys ...string) error

func (*BuildOptions) Get

func (m *BuildOptions) Get(keys ...string) (interface{}, bool)

func (*BuildOptions) GetString

func (m *BuildOptions) GetString(keys ...string) (result string, ok bool)

func (*BuildOptions) GetSubOptions added in v1.1.1

func (m *BuildOptions) GetSubOptions(keys ...string) (result BuildOptions, ok bool)

func (*BuildOptions) Sanitize added in v1.1.1

func (m *BuildOptions) Sanitize() (err error)

type BuildResponseCredentials added in v1.8.0

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

type BuildRuntimeState added in v1.9.0

type BuildRuntimeState string

type BuildStage added in v1.9.0

type BuildStage string

type BuildState

type BuildState string

type BuildTrace

type BuildTrace interface {
	io.Writer
	Success()
	Fail(err error)
	Aborted() chan interface{}
	IsStdout() bool
}

type BuildTracePatch added in v1.3.0

type BuildTracePatch interface {
	Patch() []byte
	Offset() int
	Limit() int
	SetNewOffset(newOffset int)
	ValidateRange() bool
}

type BuildVariable

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

func ParseVariable

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

func (BuildVariable) String

func (b BuildVariable) String() string

type BuildVariables

type BuildVariables []BuildVariable

func (BuildVariables) Expand

func (b BuildVariables) Expand() (variables BuildVariables)

func (BuildVariables) ExpandValue

func (b BuildVariables) ExpandValue(value string) string

func (BuildVariables) Get

func (b BuildVariables) Get(key string) string

func (BuildVariables) PublicOrInternal

func (b BuildVariables) PublicOrInternal() (variables BuildVariables)

func (BuildVariables) StringList

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

type CacheConfig

type CacheConfig struct {
	Type           string `toml:"Type,omitempty" long:"type" env:"CACHE_TYPE" description:"Select caching method: s3, to use S3 buckets"`
	ServerAddress  string `` /* 138-byte string literal not displayed */
	AccessKey      string `toml:"AccessKey,omitempty" long:"s3-access-key" env:"S3_ACCESS_KEY" description:"S3 Access Key"`
	SecretKey      string `toml:"SecretKey,omitempty" long:"s3-secret-key" env:"S3_SECRET_KEY" description:"S3 Secret Key"`
	BucketName     string `` /* 130-byte string literal not displayed */
	BucketLocation string `toml:"BucketLocation,omitempty" long:"s3-bucket-location" env:"S3_BUCKET_LOCATION" description:"Name of S3 region"`
	Insecure       bool   `toml:"Insecure,omitempty" long:"s3-insecure" env:"S3_CACHE_INSECURE" description:"Use insecure mode (without https)"`
	Path           string `toml:"Path,omitempty" long:"s3-cache-path" env:"S3_CACHE_PATH" description:"Name of the path to prepend to the cache URL"`
	Shared         bool   `toml:"Shared,omitempty" long:"cache-shared" env:"CACHE_SHARED" description:"Enable cache sharing between runners."`
}

type Commander

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

type Config

type Config struct {
	MetricsServerAddress string          `toml:"metrics_server,omitempty" json:"metrics_server"`
	Concurrent           int             `toml:"concurrent" json:"concurrent"`
	CheckInterval        int             `toml:"check_interval" json:"check_interval" description:"Define active checking interval of jobs"`
	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 DeleteRunnerRequest

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

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"`
	CPUSetCPUs             string           `` /* 159-byte string literal not displayed */
	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 */
	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"`
	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         `toml:"volumes,omitempty" json:"volumes" long:"volumes" env:"DOCKER_VOLUMES" description:"Bind mount a volumes"`
	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 */
}

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 DownloadState

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

type Executor

type Executor interface {
	Shell() *ShellScriptInfo
	Prepare(globalConfig *Config, config *RunnerConfig, build *Build) error
	Run(cmd ExecutorCommand) error
	Finish(err error)
	Cleanup()
}

func NewExecutor

func NewExecutor(executor string) Executor

type ExecutorCommand added in v1.2.0

type ExecutorCommand struct {
	Script     string
	Predefined bool
	Abort      chan interface{}
}

type ExecutorData

type ExecutorData interface{}

type ExecutorProvider

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

func GetExecutor

func GetExecutor(executor string) ExecutorProvider

func GetExecutorProviders added in v1.9.0

func GetExecutorProviders() (providers []ExecutorProvider)

type FeaturesInfo

type FeaturesInfo struct {
	Variables bool `json:"variables"`
	Image     bool `json:"image"`
	Services  bool `json:"services"`
	Artifacts bool `json:"features"`
	Cache     bool `json:"cache"`
}

type GetBuildRequest

type GetBuildRequest struct {
	Info       VersionInfo `json:"info,omitempty"`
	Token      string      `json:"token,omitempty"`
	LastUpdate string      `json:"last_update,omitempty"`
}

type GetBuildResponse

type GetBuildResponse struct {
	ID              int            `json:"id,omitempty"`
	ProjectID       int            `json:"project_id,omitempty"`
	Commands        string         `json:"commands,omitempty"`
	RepoURL         string         `json:"repo_url,omitempty"`
	Sha             string         `json:"sha,omitempty"`
	RefName         string         `json:"ref,omitempty"`
	BeforeSha       string         `json:"before_sha,omitempty"`
	AllowGitFetch   bool           `json:"allow_git_fetch,omitempty"`
	Timeout         int            `json:"timeout,omitempty"`
	Variables       BuildVariables `json:"variables"`
	Options         BuildOptions   `json:"options"`
	Token           string         `json:"token"`
	Name            string         `json:"name"`
	Stage           string         `json:"stage"`
	Tag             bool           `json:"tag"`
	DependsOnBuilds []BuildInfo    `json:"depends_on_builds"`
	TLSCAChain      string         `json:"-"`

	Credentials []BuildResponseCredentials `json:"credentials,omitempty"`
}

func GetFailedBuild added in v1.8.0

func GetFailedBuild() (GetBuildResponse, error)

func GetLongRunningBuild added in v1.8.0

func GetLongRunningBuild() (GetBuildResponse, error)

func GetRemoteFailedBuild added in v1.8.0

func GetRemoteFailedBuild() (GetBuildResponse, error)

func GetRemoteLongRunningBuild added in v1.8.0

func GetRemoteLongRunningBuild() (GetBuildResponse, error)

func GetRemoteSuccessfulBuild added in v1.8.0

func GetRemoteSuccessfulBuild() (GetBuildResponse, error)

func GetSuccessfulBuild added in v1.8.0

func GetSuccessfulBuild() (GetBuildResponse, error)

func (*GetBuildResponse) RepoCleanURL added in v1.4.0

func (b *GetBuildResponse) RepoCleanURL() (ret string)

type GitStrategy added in v1.3.0

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

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 */
	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 */
	CPUs                          string               `` /* 139-byte string literal not displayed */
	Memory                        string               `` /* 153-byte string literal not displayed */
	ServiceCPUs                   string               `` /* 179-byte string literal not displayed */
	ServiceMemory                 string               `` /* 193-byte string literal not displayed */
	HelperCPUs                    string               `` /* 174-byte string literal not displayed */
	HelperMemory                  string               `` /* 188-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    `` /* 239-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 */
}

func (*KubernetesConfig) GetHelperImage added in v1.9.0

func (c *KubernetesConfig) GetHelperImage() string

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 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 MockBuildTrace added in v1.5.0

type MockBuildTrace struct {
	mock.Mock
}

func (*MockBuildTrace) Aborted added in v1.5.0

func (m *MockBuildTrace) Aborted() chan interface{}

func (*MockBuildTrace) Fail added in v1.5.0

func (m *MockBuildTrace) Fail(err error)

func (*MockBuildTrace) IsStdout added in v1.5.0

func (m *MockBuildTrace) IsStdout() bool

func (*MockBuildTrace) Success added in v1.5.0

func (m *MockBuildTrace) Success()

type MockBuildTracePatch added in v1.5.0

type MockBuildTracePatch struct {
	mock.Mock
}

func (*MockBuildTracePatch) Limit added in v1.5.0

func (m *MockBuildTracePatch) Limit() int

func (*MockBuildTracePatch) Offset added in v1.5.0

func (m *MockBuildTracePatch) Offset() int

func (*MockBuildTracePatch) Patch added in v1.5.0

func (m *MockBuildTracePatch) Patch() []byte

func (*MockBuildTracePatch) SetNewOffset added in v1.5.0

func (m *MockBuildTracePatch) SetNewOffset(newOffset int)

func (*MockBuildTracePatch) ValidateRange added in v1.9.0

func (m *MockBuildTracePatch) ValidateRange() bool

type MockCommander added in v1.5.0

type MockCommander struct {
	mock.Mock
}

func (*MockCommander) Execute added in v1.5.0

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

type MockExecutor added in v1.5.0

type MockExecutor struct {
	mock.Mock
}

func (*MockExecutor) Cleanup added in v1.5.0

func (m *MockExecutor) Cleanup()

func (*MockExecutor) Finish added in v1.5.0

func (m *MockExecutor) Finish(err error)

func (*MockExecutor) Prepare added in v1.5.0

func (m *MockExecutor) Prepare(globalConfig *Config, config *RunnerConfig, build *Build) error

func (*MockExecutor) Run added in v1.5.0

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

func (*MockExecutor) Shell added in v1.5.0

func (m *MockExecutor) Shell() *ShellScriptInfo

type MockExecutorData added in v1.5.0

type MockExecutorData struct {
	mock.Mock
}

type MockExecutorProvider added in v1.5.0

type MockExecutorProvider struct {
	mock.Mock
}

func (*MockExecutorProvider) Acquire added in v1.5.0

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

func (*MockExecutorProvider) CanCreate added in v1.5.0

func (m *MockExecutorProvider) CanCreate() bool

func (*MockExecutorProvider) Create added in v1.5.0

func (m *MockExecutorProvider) Create() Executor

func (*MockExecutorProvider) GetFeatures added in v1.5.0

func (m *MockExecutorProvider) GetFeatures(features *FeaturesInfo)

func (*MockExecutorProvider) Release added in v1.5.0

func (m *MockExecutorProvider) Release(config *RunnerConfig, data ExecutorData) error

type MockNetwork added in v1.5.0

type MockNetwork struct {
	mock.Mock
}

func (*MockNetwork) DeleteRunner added in v1.5.0

func (m *MockNetwork) DeleteRunner(config RunnerCredentials) bool

func (*MockNetwork) DownloadArtifacts added in v1.5.0

func (m *MockNetwork) DownloadArtifacts(config BuildCredentials, artifactsFile string) DownloadState

func (*MockNetwork) GetBuild added in v1.5.0

func (m *MockNetwork) GetBuild(config RunnerConfig) (*GetBuildResponse, bool)

func (*MockNetwork) PatchTrace added in v1.5.0

func (m *MockNetwork) PatchTrace(config RunnerConfig, buildCredentials *BuildCredentials, tracePart BuildTracePatch) UpdateState

func (*MockNetwork) ProcessBuild added in v1.5.0

func (m *MockNetwork) ProcessBuild(config RunnerConfig, buildCredentials *BuildCredentials) BuildTrace

func (*MockNetwork) RegisterRunner added in v1.5.0

func (m *MockNetwork) RegisterRunner(config RunnerCredentials, description string, tags string, runUntagged bool) *RegisterRunnerResponse

func (*MockNetwork) UpdateBuild added in v1.5.0

func (m *MockNetwork) UpdateBuild(config RunnerConfig, id int, state BuildState, trace *string) UpdateState

func (*MockNetwork) UploadArtifacts added in v1.5.0

func (m *MockNetwork) UploadArtifacts(config BuildCredentials, artifactsFile string) UploadState

func (*MockNetwork) UploadRawArtifacts added in v1.5.0

func (m *MockNetwork) UploadRawArtifacts(config BuildCredentials, reader io.Reader, baseName string, expireIn string) UploadState

func (*MockNetwork) VerifyRunner added in v1.5.0

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

type MockShell added in v1.5.0

type MockShell struct {
	mock.Mock
}

func (*MockShell) GenerateScript added in v1.5.0

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

func (*MockShell) GetConfiguration added in v1.5.0

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

func (*MockShell) GetFeatures added in v1.5.0

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

func (*MockShell) GetName added in v1.5.0

func (m *MockShell) GetName() string

func (*MockShell) GetSupportedOptions added in v1.5.0

func (m *MockShell) GetSupportedOptions() []string

func (*MockShell) IsDefault added in v1.5.0

func (m *MockShell) IsDefault() bool

type Network

type Network interface {
	GetBuild(config RunnerConfig) (*GetBuildResponse, bool)
	RegisterRunner(config RunnerCredentials, description, tags string, runUntagged bool) *RegisterRunnerResponse
	DeleteRunner(config RunnerCredentials) bool
	VerifyRunner(config RunnerCredentials) bool
	UpdateBuild(config RunnerConfig, id int, state BuildState, trace *string) UpdateState
	PatchTrace(config RunnerConfig, buildCredentials *BuildCredentials, tracePart BuildTracePatch) UpdateState
	DownloadArtifacts(config BuildCredentials, artifactsFile string) DownloadState
	UploadRawArtifacts(config BuildCredentials, reader io.Reader, baseName string, expireIn string) UploadState
	UploadArtifacts(config BuildCredentials, artifactsFile string) UploadState
	ProcessBuild(config RunnerConfig, buildCredentials *BuildCredentials) BuildTrace
}

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 */
}

type RegisterRunnerRequest

type RegisterRunnerRequest struct {
	Info        VersionInfo `json:"info,omitempty"`
	Token       string      `json:"token,omitempty"`
	Description string      `json:"description,omitempty"`
	Tags        string      `json:"tag_list,omitempty"`
	RunUntagged bool        `json:"run_untagged"`
}

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) GetRequestConcurrency added in v1.10.8

func (c *RunnerConfig) GetRequestConcurrency() int

func (*RunnerConfig) GetVariables

func (c *RunnerConfig) GetVariables() BuildVariables

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 */
}

func (*RunnerCredentials) Log

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

func (*RunnerCredentials) ShortDescription

func (c *RunnerCredentials) ShortDescription() string

func (*RunnerCredentials) UniqueID

func (c *RunnerCredentials) UniqueID() string

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 */

	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 */

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

	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"`
}

type Shell

type Shell interface {
	GetName() string
	GetSupportedOptions() []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 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
	Abort  chan interface{}
}

func (*Trace) Aborted added in v1.4.0

func (s *Trace) Aborted() chan interface{}

func (*Trace) Fail added in v1.4.0

func (s *Trace) Fail(err error)

func (*Trace) IsStdout added in v1.4.0

func (s *Trace) IsStdout() bool

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 UpdateBuildRequest

type UpdateBuildRequest struct {
	Info  VersionInfo `json:"info,omitempty"`
	Token string      `json:"token,omitempty"`
	State BuildState  `json:"state,omitempty"`
	Trace *string     `json:"trace,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"`
	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