network

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Oct 25, 2022 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoJobAvailable = errors.New("no job available")

Functions

This section is empty.

Types

type AppendJobTraceParam

type AppendJobTraceParam struct {
	// Job's authentication token
	JobToken string
	// Job's ID
	JobID int
	// Job trace source
	Reader io.Reader
	// Size of trace from Reader, in bytes
	ContentLength int
	// Range
	RangeStart int
}

type Client

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

Client bridges Tart and Gitlab

func NewClient

func NewClient(opt ClientOpt) (client *Client, err error)

func (*Client) AppendJobTrace

func (c *Client) AppendJobTrace(ctx context.Context, param AppendJobTraceParam) (nextRangeStart int, err error)

func (*Client) Register

func (c *Client) Register(ctx context.Context, param RegisterParam) (accessToken string, err error)

Register Registers a new Runner and obtains its access token.

func (*Client) RequestJob

func (c *Client) RequestJob(ctx context.Context, accessToken string) (job RequestJobResp, err error)

func (*Client) UpdateJob

func (c *Client) UpdateJob(ctx context.Context, param UpdateJobParam) (err error)

type ClientOpt

type ClientOpt struct {
	// API endpoint, only scheme + host, e.g. https://gitlab.example.com
	Endpoint string
	// What feature does the runner support?
	Features Features
}

type FailureReason

type FailureReason string
const (
	FailureReasonScriptFailure       FailureReason = "script_failure"
	FailureReasonRunnerSystemFailure FailureReason = "runner_system_failure"
	FailureReasonArchivedFailure     FailureReason = "archived_failure"
	FailureReasonJobTimeout          FailureReason = "job_execution_timeout"
	FailureReasonRunnerUnsupported   FailureReason = "runner_unsupported"
)

type Features

type Features struct {
	Shared                  bool `json:"shared"`
	MultiBuildSteps         bool `json:"multi_build_steps"`
	Cancelable              bool `json:"cancelable"`
	ReturnExitCode          bool `json:"return_exit_code"`
	Variables               bool `json:"variables"`
	RawVariables            bool `json:"raw_variables"`
	Artifacts               bool `json:"artifacts"`
	UploadMultipleArtifacts bool `json:"upload_multiple_artifacts"`
	UploadRawArtifacts      bool `json:"upload_raw_artifacts"`
	ArtifactsExclude        bool `json:"artifacts_exclude"`
	TraceReset              bool `json:"trace_reset"`
	TraceChecksum           bool `json:"trace_checksum"`
	TraceSize               bool `json:"trace_size"`
}

Features describes the runner's abilities. Since Tart is a toy runner, a very limited set of features are supported.

type GitInfo

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

type Info

type Info struct {
	// e.g. amd64
	Architecture string `json:"architecture"`
	// e.g. shell
	Executor string `json:"executor,omitempty"`
	// e.g. bash
	Shell string `json:"shell,omitempty"`
	// supported features
	Features Features `json:"features"`
	// e.g. gitlab-runner
	Name string `json:"name"`
	// e.g. linux
	Platform string `json:"platform"`
	// e.g. f98d0f26
	Revision string `json:"revision"`
	// e.g. 15.2.0~beta.60.gf98d0f26
	Version string `json:"version"`
}

type JobCredential

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

type JobInfo

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

type JobState

type JobState string
const (
	JobStateRunning JobState = "running"
	JobStateSuccess JobState = "success"
	JobStateFailed  JobState = "failed"
)

type JobStep

type JobStep struct {
	AllowFailure bool     `json:"allow_failure"`
	Name         string   `json:"name"`
	Script       []string `json:"script"`
	Timeout      int      `json:"timeout"`
	When         string   `json:"when"`
}

type JobTrace

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

func NewJobTrace

func NewJobTrace(opt JobTraceOpt) (trace *JobTrace, err error)

func (*JobTrace) Complete

func (t *JobTrace) Complete(ctx context.Context) error

func (*JobTrace) Fail

func (t *JobTrace) Fail(ctx context.Context, exitCode int, reason FailureReason) error

func (*JobTrace) Write

func (t *JobTrace) Write(p []byte) (n int, err error)

type JobTraceOpt

type JobTraceOpt struct {
	Logger *zap.Logger
	Client *Client

	JobToken string
	JobID    int
}

type JobVariable

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

type RegisterParam

type RegisterParam struct {
	// Registration token
	Token string
	// Runner's description
	Description string
}

type RegisterReq

type RegisterReq struct {
	// Registration token
	Token string `json:"token"`
	// Runner's description
	Description string `json:"description"`
	// runner meta data
	Info Info `json:"info"`
	// Whether the runner should be locked for current project
	Locked bool `json:"locked"`
	// Runner's maintenance notes
	MaintenanceNote string `json:"maintenance_note"`
	// Whether the runner should ignore new jobs
	Paused bool `json:"paused"`
	// Whether the runner should handle untagged jobs
	RunUntagged bool `json:"run_untagged"`
}

type RegisterResp

type RegisterResp struct {
	// Runner's ID on Gitlab side
	ID int `json:"id"`
	// Runner's authentication token
	Token string `json:"token"`
}

type RequestJobReq

type RequestJobReq struct {
	// runner meta data
	Info Info `json:"info"`
	// runner work queue cursor, for cache purpose
	LastUpdate string `json:"last_update"`
	// Runner's authentication token
	Token string `json:"token"`
}

type RequestJobResp

type RequestJobResp struct {
	ID            int             `json:"id"`
	AllowGitFetch bool            `json:"allow_git_fetch"`
	Artifacts     interface{}     `json:"artifacts"`
	Credentials   []JobCredential `json:"credentials"`
	GitInfo       GitInfo         `json:"git_info"`
	JobInfo       JobInfo         `json:"job_info"`
	Steps         []JobStep       `json:"steps"`
	Token         string          `json:"token"`
	Variables     []JobVariable   `json:"variables"`
}

type TraceSummary

type TraceSummary struct {
	ByteSize int    `json:"bytesize"`
	Checksum string `json:"checksum"`
}

type UpdateJobParam

type UpdateJobParam struct {
	// Job's authentication token
	JobToken string
	// Job's ID
	JobID int
	// Job's status: success, failed
	State JobState
	// Job's trace CRC32 checksum
	TraceChecksum string
	// Job's trace size in bytes
	TraceByteSize int
	// Job's exit code
	ExitCode int
	// Job's failure_reason
	FailureReason FailureReason
}

type UpdateJobReq

type UpdateJobReq struct {
	Checksum      string        `json:"checksum"`
	ExitCode      int           `json:"exit_code"`
	FailureReason FailureReason `json:"failure_reason"`
	Info          Info          `json:"info"`
	Output        TraceSummary  `json:"output"`
	State         JobState      `json:"state"`
	Token         string        `json:"token"`
}

Jump to

Keyboard shortcuts

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