Documentation ¶
Index ¶
- Constants
- func CountRunJobs(ctx context.Context, opts FindRunJobOptions) (int64, error)
- func CountRunners(ctx context.Context, opts FindRunnerOptions) (int64, error)
- func CountRuns(ctx context.Context, opts FindRunOptions) (int64, error)
- func CountTasks(ctx context.Context, opts FindTaskOptions) (int64, error)
- func CreateRunner(ctx context.Context, t *ActionRunner) error
- func DeleteRunner(ctx context.Context, id int64) error
- func FindTaskOutputKeyByTaskID(ctx context.Context, taskID int64) ([]string, error)
- func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWorkflow) error
- func InsertTaskOutputIfNotExist(ctx context.Context, taskID int64, key, value string) error
- func StopTask(ctx context.Context, taskID int64, status Status) error
- func UpdateArtifactByID(ctx context.Context, id int64, art *ActionArtifact) error
- func UpdateRun(ctx context.Context, run *ActionRun, cols ...string) error
- func UpdateRunJob(ctx context.Context, job *ActionRunJob, cond builder.Cond, cols ...string) (int64, error)
- func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error
- func UpdateRunnerToken(ctx context.Context, r *ActionRunnerToken, cols ...string) (err error)
- func UpdateTask(ctx context.Context, task *ActionTask, cols ...string) error
- type ActionArtifact
- func CreateArtifact(ctx context.Context, t *ActionTask, artifactName string) (*ActionArtifact, error)
- func GetArtifactByID(ctx context.Context, id int64) (*ActionArtifact, error)
- func ListArtifactsByRepoID(ctx context.Context, repoID int64) ([]*ActionArtifact, error)
- func ListArtifactsByRunID(ctx context.Context, runID int64) ([]*ActionArtifact, error)
- func ListUploadedArtifactsByRunID(ctx context.Context, runID int64) ([]*ActionArtifact, error)
- type ActionJobList
- type ActionRun
- func (run *ActionRun) Duration() time.Duration
- func (run *ActionRun) GetPullRequestEventPayload() (*api.PullRequestPayload, error)
- func (run *ActionRun) GetPushEventPayload() (*api.PushPayload, error)
- func (run *ActionRun) HTMLURL() string
- func (run *ActionRun) Link() string
- func (run *ActionRun) LoadAttributes(ctx context.Context) error
- func (run *ActionRun) PrettyRef() string
- func (run *ActionRun) RefLink() string
- type ActionRunIndex
- type ActionRunJob
- type ActionRunner
- func (r *ActionRunner) AllLabels() []string
- func (r *ActionRunner) BelongsToOwnerName() string
- func (r *ActionRunner) BelongsToOwnerType() types.OwnerType
- func (r *ActionRunner) Editable(ownerID, repoID int64) bool
- func (r *ActionRunner) GenerateToken() (err error)
- func (r *ActionRunner) IsOnline() bool
- func (r *ActionRunner) LoadAttributes(ctx context.Context) error
- func (r *ActionRunner) Status() runnerv1.RunnerStatus
- func (r *ActionRunner) StatusLocaleName(lang translation.Locale) string
- func (r *ActionRunner) StatusName() string
- type ActionRunnerToken
- type ActionTask
- func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask, bool, error)
- func GetRunningTaskByToken(ctx context.Context, token string) (*ActionTask, error)
- func GetTaskByID(ctx context.Context, id int64) (*ActionTask, error)
- func UpdateTaskByState(ctx context.Context, state *runnerv1.TaskState) (*ActionTask, error)
- func (task *ActionTask) Duration() time.Duration
- func (task *ActionTask) GenerateToken() (err error)
- func (task *ActionTask) GetCommitLink() string
- func (task *ActionTask) GetRepoLink() string
- func (task *ActionTask) GetRepoName() string
- func (task *ActionTask) GetRunLink() string
- func (task *ActionTask) IsStopped() bool
- func (task *ActionTask) LoadAttributes(ctx context.Context) error
- func (task *ActionTask) LoadJob(ctx context.Context) error
- type ActionTaskOutput
- type ActionTaskStep
- type FindRunJobOptions
- type FindRunOptions
- type FindRunnerOptions
- type FindTaskOptions
- type LogIndexes
- type RunList
- type RunnerList
- type Status
- func (s Status) AsResult() runnerv1.Result
- func (s Status) HasRun() bool
- func (s Status) In(statuses ...Status) bool
- func (s Status) IsBlocked() bool
- func (s Status) IsCancelled() bool
- func (s Status) IsDone() bool
- func (s Status) IsFailure() bool
- func (s Status) IsRunning() bool
- func (s Status) IsSkipped() bool
- func (s Status) IsSuccess() bool
- func (s Status) IsUnknown() bool
- func (s Status) IsWaiting() bool
- func (s Status) LocaleString(lang translation.Locale) string
- func (s Status) String() string
- type TaskList
Constants ¶
const ( // ArtifactStatusUploadPending is the status of an artifact upload that is pending ArtifactStatusUploadPending = 1 // ArtifactStatusUploadConfirmed is the status of an artifact upload that is confirmed ArtifactStatusUploadConfirmed = 2 // ArtifactStatusUploadError is the status of an artifact upload that is errored ArtifactStatusUploadError = 3 )
Variables ¶
This section is empty.
Functions ¶
func CountRunJobs ¶
func CountRunJobs(ctx context.Context, opts FindRunJobOptions) (int64, error)
func CountRunners ¶
func CountRunners(ctx context.Context, opts FindRunnerOptions) (int64, error)
func CountTasks ¶
func CountTasks(ctx context.Context, opts FindTaskOptions) (int64, error)
func CreateRunner ¶
func CreateRunner(ctx context.Context, t *ActionRunner) error
CreateRunner creates new runner.
func DeleteRunner ¶
DeleteRunner deletes a runner by given ID.
func FindTaskOutputKeyByTaskID ¶ added in v1.20.0
FindTaskOutputKeyByTaskID returns the keys of the outputs of the task.
func InsertTaskOutputIfNotExist ¶ added in v1.20.0
InsertTaskOutputIfNotExist inserts a new task output if it does not exist.
func UpdateArtifactByID ¶ added in v1.20.0
func UpdateArtifactByID(ctx context.Context, id int64, art *ActionArtifact) error
UpdateArtifactByID updates an artifact by id
func UpdateRunJob ¶
func UpdateRunner ¶
func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error
UpdateRunner updates runner's information.
func UpdateRunnerToken ¶
func UpdateRunnerToken(ctx context.Context, r *ActionRunnerToken, cols ...string) (err error)
UpdateRunnerToken updates runner token information.
func UpdateTask ¶
func UpdateTask(ctx context.Context, task *ActionTask, cols ...string) error
Types ¶
type ActionArtifact ¶ added in v1.20.0
type ActionArtifact struct { ID int64 `xorm:"pk autoincr"` RunID int64 `xorm:"index UNIQUE(runid_name)"` // The run id of the artifact RunnerID int64 RepoID int64 `xorm:"index"` OwnerID int64 CommitSHA string StoragePath string // The path to the artifact in the storage FileSize int64 // The size of the artifact in bytes FileCompressedSize int64 // The size of the artifact in bytes after gzip compression ContentEncoding string // The content encoding of the artifact ArtifactPath string // The path to the artifact when runner uploads it ArtifactName string `xorm:"UNIQUE(runid_name)"` // The name of the artifact when runner uploads it Status int64 `xorm:"index"` // The status of the artifact, uploading, expired or need-delete CreatedUnix timeutil.TimeStamp `xorm:"created"` UpdatedUnix timeutil.TimeStamp `xorm:"updated index"` }
ActionArtifact is a file that is stored in the artifact storage.
func CreateArtifact ¶ added in v1.20.0
func CreateArtifact(ctx context.Context, t *ActionTask, artifactName string) (*ActionArtifact, error)
CreateArtifact create a new artifact with task info or get same named artifact in the same run
func GetArtifactByID ¶ added in v1.20.0
func GetArtifactByID(ctx context.Context, id int64) (*ActionArtifact, error)
GetArtifactByID returns an artifact by id
func ListArtifactsByRepoID ¶ added in v1.20.0
func ListArtifactsByRepoID(ctx context.Context, repoID int64) ([]*ActionArtifact, error)
ListArtifactsByRepoID returns all artifacts of a repo
func ListArtifactsByRunID ¶ added in v1.20.0
func ListArtifactsByRunID(ctx context.Context, runID int64) ([]*ActionArtifact, error)
ListArtifactsByRunID returns all artifacts of a run
func ListUploadedArtifactsByRunID ¶ added in v1.20.0
func ListUploadedArtifactsByRunID(ctx context.Context, runID int64) ([]*ActionArtifact, error)
ListUploadedArtifactsByRunID returns all uploaded artifacts of a run
type ActionJobList ¶
type ActionJobList []*ActionRunJob
func FindRunJobs ¶
func FindRunJobs(ctx context.Context, opts FindRunJobOptions) (ActionJobList, int64, error)
func (ActionJobList) GetRunIDs ¶
func (jobs ActionJobList) GetRunIDs() []int64
func (ActionJobList) LoadAttributes ¶
func (jobs ActionJobList) LoadAttributes(ctx context.Context, withRepo bool) error
type ActionRun ¶
type ActionRun struct { ID int64 Title string RepoID int64 `xorm:"index unique(repo_index)"` Repo *repo_model.Repository `xorm:"-"` OwnerID int64 `xorm:"index"` WorkflowID string `xorm:"index"` // the name of workflow file Index int64 `xorm:"index unique(repo_index)"` // a unique number for each run of a repository TriggerUserID int64 `xorm:"index"` TriggerUser *user_model.User `xorm:"-"` Ref string CommitSHA string IsForkPullRequest bool // If this is triggered by a PR from a forked repository or an untrusted user, we need to check if it is approved and limit permissions when running the workflow. NeedApproval bool // may need approval if it's a fork pull request ApprovedBy int64 `xorm:"index"` // who approved Event webhook_module.HookEventType EventPayload string `xorm:"LONGTEXT"` Status Status `xorm:"index"` Started timeutil.TimeStamp Stopped timeutil.TimeStamp Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` }
ActionRun represents a run of a workflow file
func GetRunByIndex ¶
func (*ActionRun) GetPullRequestEventPayload ¶
func (run *ActionRun) GetPullRequestEventPayload() (*api.PullRequestPayload, error)
func (*ActionRun) GetPushEventPayload ¶
func (run *ActionRun) GetPushEventPayload() (*api.PushPayload, error)
func (*ActionRun) LoadAttributes ¶
LoadAttributes load Repo TriggerUser if not loaded
type ActionRunIndex ¶
type ActionRunIndex db.ResourceIndex
type ActionRunJob ¶
type ActionRunJob struct { ID int64 RunID int64 `xorm:"index"` Run *ActionRun `xorm:"-"` RepoID int64 `xorm:"index"` OwnerID int64 `xorm:"index"` CommitSHA string `xorm:"index"` IsForkPullRequest bool Name string `xorm:"VARCHAR(255)"` Attempt int64 WorkflowPayload []byte JobID string `xorm:"VARCHAR(255)"` // job id in workflow, not job's id Needs []string `xorm:"JSON TEXT"` RunsOn []string `xorm:"JSON TEXT"` TaskID int64 // the latest task of the job Status Status `xorm:"index"` Started timeutil.TimeStamp Stopped timeutil.TimeStamp Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated index"` }
ActionRunJob represents a job of a run
func GetRunJobByID ¶
func GetRunJobByID(ctx context.Context, id int64) (*ActionRunJob, error)
func GetRunJobsByRunID ¶
func GetRunJobsByRunID(ctx context.Context, runID int64) ([]*ActionRunJob, error)
func (*ActionRunJob) Duration ¶
func (job *ActionRunJob) Duration() time.Duration
func (*ActionRunJob) LoadAttributes ¶
func (job *ActionRunJob) LoadAttributes(ctx context.Context) error
LoadAttributes load Run if not loaded
type ActionRunner ¶
type ActionRunner struct { ID int64 UUID string `xorm:"CHAR(36) UNIQUE"` Name string `xorm:"VARCHAR(255)"` Version string `xorm:"VARCHAR(64)"` OwnerID int64 `xorm:"index"` // org level runner, 0 means system Owner *user_model.User `xorm:"-"` RepoID int64 `xorm:"index"` // repo level runner, if OwnerID also is zero, then it's a global Repo *repo_model.Repository `xorm:"-"` Description string `xorm:"TEXT"` Base int // 0 native 1 docker 2 virtual machine RepoRange string // glob match which repositories could use this runner Token string `xorm:"-"` TokenHash string `xorm:"UNIQUE"` // sha256 of token TokenSalt string LastOnline timeutil.TimeStamp `xorm:"index"` LastActive timeutil.TimeStamp `xorm:"index"` // Store OS and Artch. AgentLabels []string // Store custom labes use defined. CustomLabels []string Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` Deleted timeutil.TimeStamp `xorm:"deleted"` }
ActionRunner represents runner machines
func GetRunnerByID ¶
func GetRunnerByID(ctx context.Context, id int64) (*ActionRunner, error)
GetRunnerByID returns a runner via id
func GetRunnerByUUID ¶
func GetRunnerByUUID(ctx context.Context, uuid string) (*ActionRunner, error)
GetRunnerByUUID returns a runner via uuid
func (*ActionRunner) AllLabels ¶
func (r *ActionRunner) AllLabels() []string
AllLabels returns agent and custom labels
func (*ActionRunner) BelongsToOwnerName ¶ added in v1.20.0
func (r *ActionRunner) BelongsToOwnerName() string
BelongsToOwnerName before calling, should guarantee that all attributes are loaded
func (*ActionRunner) BelongsToOwnerType ¶ added in v1.20.0
func (r *ActionRunner) BelongsToOwnerType() types.OwnerType
func (*ActionRunner) Editable ¶
func (r *ActionRunner) Editable(ownerID, repoID int64) bool
Editable checks if the runner is editable by the user
func (*ActionRunner) GenerateToken ¶
func (r *ActionRunner) GenerateToken() (err error)
func (*ActionRunner) IsOnline ¶
func (r *ActionRunner) IsOnline() bool
func (*ActionRunner) LoadAttributes ¶
func (r *ActionRunner) LoadAttributes(ctx context.Context) error
LoadAttributes loads the attributes of the runner
func (*ActionRunner) Status ¶
func (r *ActionRunner) Status() runnerv1.RunnerStatus
func (*ActionRunner) StatusLocaleName ¶
func (r *ActionRunner) StatusLocaleName(lang translation.Locale) string
func (*ActionRunner) StatusName ¶
func (r *ActionRunner) StatusName() string
type ActionRunnerToken ¶
type ActionRunnerToken struct { ID int64 Token string `xorm:"UNIQUE"` OwnerID int64 `xorm:"index"` // org level runner, 0 means system Owner *user_model.User `xorm:"-"` RepoID int64 `xorm:"index"` // repo level runner, if orgid also is zero, then it's a global Repo *repo_model.Repository `xorm:"-"` IsActive bool Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` Deleted timeutil.TimeStamp `xorm:"deleted"` }
ActionRunnerToken represents runner tokens
func GetRunnerToken ¶
func GetRunnerToken(ctx context.Context, token string) (*ActionRunnerToken, error)
GetRunnerToken returns a action runner via token
func GetUnactivatedRunnerToken ¶
func GetUnactivatedRunnerToken(ctx context.Context, ownerID, repoID int64) (*ActionRunnerToken, error)
GetUnactivatedRunnerToken returns a unactivated runner token
func NewRunnerToken ¶
func NewRunnerToken(ctx context.Context, ownerID, repoID int64) (*ActionRunnerToken, error)
NewRunnerToken creates a new runner token
type ActionTask ¶
type ActionTask struct { ID int64 JobID int64 Job *ActionRunJob `xorm:"-"` Steps []*ActionTaskStep `xorm:"-"` Attempt int64 RunnerID int64 `xorm:"index"` Status Status `xorm:"index"` Started timeutil.TimeStamp `xorm:"index"` Stopped timeutil.TimeStamp RepoID int64 `xorm:"index"` OwnerID int64 `xorm:"index"` CommitSHA string `xorm:"index"` IsForkPullRequest bool Token string `xorm:"-"` TokenHash string `xorm:"UNIQUE"` // sha256 of token TokenSalt string TokenLastEight string `xorm:"index token_last_eight"` LogFilename string // file name of log LogInStorage bool // read log from database or from storage LogLength int64 // lines count LogSize int64 // blob size LogIndexes LogIndexes `xorm:"LONGBLOB"` // line number to offset LogExpired bool // files that are too old will be deleted Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated index"` }
ActionTask represents a distribution of job
func CreateTaskForRunner ¶
func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask, bool, error)
func GetRunningTaskByToken ¶
func GetRunningTaskByToken(ctx context.Context, token string) (*ActionTask, error)
func GetTaskByID ¶
func GetTaskByID(ctx context.Context, id int64) (*ActionTask, error)
func UpdateTaskByState ¶
UpdateTaskByState updates the task by the state. It will always update the task if the state is not final, even there is no change. So it will update ActionTask.Updated to avoid the task being judged as a zombie task.
func (*ActionTask) Duration ¶
func (task *ActionTask) Duration() time.Duration
func (*ActionTask) GenerateToken ¶
func (task *ActionTask) GenerateToken() (err error)
func (*ActionTask) GetCommitLink ¶
func (task *ActionTask) GetCommitLink() string
func (*ActionTask) GetRepoLink ¶
func (task *ActionTask) GetRepoLink() string
func (*ActionTask) GetRepoName ¶
func (task *ActionTask) GetRepoName() string
func (*ActionTask) GetRunLink ¶
func (task *ActionTask) GetRunLink() string
func (*ActionTask) IsStopped ¶
func (task *ActionTask) IsStopped() bool
func (*ActionTask) LoadAttributes ¶
func (task *ActionTask) LoadAttributes(ctx context.Context) error
LoadAttributes load Job Steps if not loaded
type ActionTaskOutput ¶ added in v1.20.0
type ActionTaskOutput struct { ID int64 TaskID int64 `xorm:"INDEX UNIQUE(task_id_output_key)"` OutputKey string `xorm:"VARCHAR(255) UNIQUE(task_id_output_key)"` OutputValue string `xorm:"MEDIUMTEXT"` }
ActionTaskOutput represents an output of ActionTask. So the outputs are bound to a task, that means when a completed job has been rerun, the outputs of the job will be reset because the task is new. It's by design, to avoid the outputs of the old task to be mixed with the new task.
func FindTaskOutputByTaskID ¶ added in v1.20.0
func FindTaskOutputByTaskID(ctx context.Context, taskID int64) ([]*ActionTaskOutput, error)
FindTaskOutputByTaskID returns the outputs of the task.
type ActionTaskStep ¶
type ActionTaskStep struct { ID int64 Name string `xorm:"VARCHAR(255)"` TaskID int64 `xorm:"index unique(task_index)"` Index int64 `xorm:"index unique(task_index)"` RepoID int64 `xorm:"index"` Status Status `xorm:"index"` LogIndex int64 LogLength int64 Started timeutil.TimeStamp Stopped timeutil.TimeStamp Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` }
ActionTaskStep represents a step of ActionTask
func GetTaskStepsByTaskID ¶
func GetTaskStepsByTaskID(ctx context.Context, taskID int64) ([]*ActionTaskStep, error)
func (*ActionTaskStep) Duration ¶
func (step *ActionTaskStep) Duration() time.Duration
type FindRunJobOptions ¶
type FindRunOptions ¶
type FindRunnerOptions ¶
type FindTaskOptions ¶
type LogIndexes ¶
type LogIndexes []int64
LogIndexes is the index for mapping log line number to buffer offset. Because it uses varint encoding, it is impossible to predict its size. But we can make a simple estimate with an assumption that each log line has 200 byte, then: | lines | file size | index size | |-----------|---------------------|--------------------| | 100 | 20 KiB(20000) | 258 B(258) | | 1000 | 195 KiB(200000) | 2.9 KiB(2958) | | 10000 | 1.9 MiB(2000000) | 34 KiB(34715) | | 100000 | 19 MiB(20000000) | 386 KiB(394715) | | 1000000 | 191 MiB(200000000) | 4.1 MiB(4323626) | | 10000000 | 1.9 GiB(2000000000) | 47 MiB(49323626) | | 100000000 | 19 GiB(20000000000) | 490 MiB(513424280) |
func (*LogIndexes) FromDB ¶
func (indexes *LogIndexes) FromDB(b []byte) error
func (*LogIndexes) ToDB ¶
func (indexes *LogIndexes) ToDB() ([]byte, error)
type RunList ¶
type RunList []*ActionRun
func (RunList) GetRepoIDs ¶
func (RunList) GetUserIDs ¶
GetUserIDs returns a slice of user's id
type RunnerList ¶
type RunnerList []*ActionRunner
func FindRunners ¶
func FindRunners(ctx context.Context, opts FindRunnerOptions) (runners RunnerList, err error)
func (RunnerList) GetUserIDs ¶
func (runners RunnerList) GetUserIDs() []int64
GetUserIDs returns a slice of user's id
func (RunnerList) LoadAttributes ¶
func (runners RunnerList) LoadAttributes(ctx context.Context) error
func (RunnerList) LoadOwners ¶
func (runners RunnerList) LoadOwners(ctx context.Context) error
type Status ¶
type Status int
Status represents the status of ActionRun, ActionRunJob, ActionTask, or ActionTaskStep
const ( StatusUnknown Status = iota // 0, consistent with runnerv1.Result_RESULT_UNSPECIFIED StatusSuccess // 1, consistent with runnerv1.Result_RESULT_SUCCESS StatusFailure // 2, consistent with runnerv1.Result_RESULT_FAILURE StatusCancelled // 3, consistent with runnerv1.Result_RESULT_CANCELLED StatusSkipped // 4, consistent with runnerv1.Result_RESULT_SKIPPED StatusWaiting // 5, isn't a runnerv1.Result StatusRunning // 6, isn't a runnerv1.Result StatusBlocked // 7, isn't a runnerv1.Result )
func (Status) IsCancelled ¶
func (Status) LocaleString ¶
func (s Status) LocaleString(lang translation.Locale) string
LocaleString returns the locale string name of the Status
type TaskList ¶
type TaskList []*ActionTask