Documentation ¶
Index ¶
- Constants
- func CancelPreviousJobs(ctx context.Context, repoID int64, ref, workflowID string, ...) error
- func CleanRepoScheduleTasks(ctx context.Context, repo *repo_model.Repository) error
- func CountRunnersWithoutBelongingOwner(ctx context.Context) (int64, error)
- func CountRunnersWithoutBelongingRepo(ctx context.Context) (int64, error)
- func CreateRunner(ctx context.Context, t *ActionRunner) error
- func CreateScheduleTask(ctx context.Context, rows []*ActionSchedule) error
- func DeleteRunner(ctx context.Context, id int64) error
- func DeleteScheduleTaskByRepo(ctx context.Context, id int64) error
- func DeleteVariable(ctx context.Context, id int64) error
- func FindTaskOutputKeyByTaskID(ctx context.Context, taskID int64) ([]string, error)
- func FixRunnersWithoutBelongingOwner(ctx context.Context) (int64, error)
- func FixRunnersWithoutBelongingRepo(ctx context.Context) (int64, error)
- func GetActors(ctx context.Context, repoID int64) ([]*user_model.User, error)
- func GetReposMapByIDs(ctx context.Context, ids []int64) (map[int64]*repo_model.Repository, error)
- func GetSchedulesMapByIDs(ctx context.Context, ids []int64) (map[int64]*ActionSchedule, error)
- func GetTasksVersionByScope(ctx context.Context, ownerID, repoID int64) (int64, error)
- func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string, error)
- func IncreaseTaskVersion(ctx context.Context, ownerID, repoID int64) error
- func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWorkflow) error
- func InsertTaskOutputIfNotExist(ctx context.Context, taskID int64, key, value string) error
- func SetArtifactDeleted(ctx context.Context, artifactID int64) error
- func SetArtifactExpired(ctx context.Context, artifactID int64) error
- func SetArtifactNeedDelete(ctx context.Context, runID int64, name 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 UpdateScheduleSpec(ctx context.Context, spec *ActionScheduleSpec, cols ...string) error
- func UpdateTask(ctx context.Context, task *ActionTask, cols ...string) error
- func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error)
- type ActionArtifact
- type ActionArtifactMeta
- type ActionJobList
- type ActionRun
- func GetLatestRun(ctx context.Context, repoID int64) (*ActionRun, error)
- func GetRunByID(ctx context.Context, id int64) (*ActionRun, error)
- func GetRunByIndex(ctx context.Context, repoID, index int64) (*ActionRun, error)
- func GetWorkflowLatestRun(ctx context.Context, repoID int64, workflowFile, branch, event string) (*ActionRun, error)
- 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) IsSchedule() bool
- func (run *ActionRun) Link() string
- func (run *ActionRun) LoadAttributes(ctx context.Context) error
- func (run *ActionRun) LoadRepo(ctx context.Context) error
- func (run *ActionRun) PrettyRef() string
- func (run *ActionRun) RefLink() string
- func (run *ActionRun) WorkflowLink() string
- type ActionRunIndex
- type ActionRunJob
- type ActionRunner
- 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 ActionSchedule
- type ActionScheduleSpec
- type ActionTask
- func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask, bool, error)
- func FindOldTasksToExpire(ctx context.Context, olderThan timeutil.TimeStamp, limit int) ([]*ActionTask, error)
- func GetRunningTaskByToken(ctx context.Context, token string) (*ActionTask, error)
- func GetTaskByID(ctx context.Context, id int64) (*ActionTask, error)
- func UpdateTaskByState(ctx context.Context, runnerID int64, 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 ActionTasksVersion
- type ActionVariable
- type ArtifactStatus
- type FindArtifactsOptions
- type FindRunJobOptions
- type FindRunOptions
- type FindRunnerOptions
- type FindScheduleOptions
- type FindSpecOptions
- type FindTaskOptions
- type FindVariablesOpts
- type LogIndexes
- type RunList
- type RunnerList
- type ScheduleList
- type SpecList
- 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 StatusInfo
- type TaskList
Constants ¶
const ( RunnerOfflineTime = time.Minute RunnerIdleTime = 10 * time.Second )
Variables ¶
This section is empty.
Functions ¶
func CancelPreviousJobs ¶
func CancelPreviousJobs(ctx context.Context, repoID int64, ref, workflowID string, event webhook_module.HookEventType) error
CancelPreviousJobs cancels all previous jobs of the same repository, reference, workflow, and event. It's useful when a new run is triggered, and all previous runs needn't be continued anymore.
func CleanRepoScheduleTasks ¶
func CleanRepoScheduleTasks(ctx context.Context, repo *repo_model.Repository) error
func CreateRunner ¶
func CreateRunner(ctx context.Context, t *ActionRunner) error
CreateRunner creates new runner.
func CreateScheduleTask ¶
func CreateScheduleTask(ctx context.Context, rows []*ActionSchedule) error
CreateScheduleTask creates new schedule task.
func DeleteRunner ¶
DeleteRunner deletes a runner by given ID.
func FindTaskOutputKeyByTaskID ¶
FindTaskOutputKeyByTaskID returns the keys of the outputs of the task.
func GetReposMapByIDs ¶
func GetReposMapByIDs(ctx context.Context, ids []int64) (map[int64]*repo_model.Repository, error)
GetReposMapByIDs returns the repos by given id slice.
func GetSchedulesMapByIDs ¶
GetSchedulesMapByIDs returns the schedules by given id slice.
func GetTasksVersionByScope ¶
func GetVariablesOfRun ¶
func IncreaseTaskVersion ¶
func InsertRun ¶
InsertRun inserts a run The title will be cut off at 255 characters if it's longer than 255 characters.
func InsertTaskOutputIfNotExist ¶
InsertTaskOutputIfNotExist inserts a new task output if it does not exist.
func SetArtifactDeleted ¶
SetArtifactDeleted sets an artifact to deleted
func SetArtifactExpired ¶
SetArtifactExpired sets an artifact to expired
func SetArtifactNeedDelete ¶
SetArtifactNeedDelete sets an artifact to need-delete, cron job will delete it
func UpdateArtifactByID ¶
func UpdateArtifactByID(ctx context.Context, id int64, art *ActionArtifact) error
UpdateArtifactByID updates an artifact by id
func UpdateRun ¶
UpdateRun updates a run. It requires the inputted run has Version set. It will return error if the version is not matched (it means the run has been changed after loaded).
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 UpdateScheduleSpec ¶
func UpdateScheduleSpec(ctx context.Context, spec *ActionScheduleSpec, cols ...string) error
func UpdateTask ¶
func UpdateTask(ctx context.Context, task *ActionTask, cols ...string) error
func UpdateVariable ¶
func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error)
Types ¶
type ActionArtifact ¶
type ActionArtifact struct { ID int64 `xorm:"pk autoincr"` RunID int64 `xorm:"index unique(runid_name_path)"` // 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 `xorm:"index unique(runid_name_path)"` // The path to the artifact when runner uploads it ArtifactName string `xorm:"index unique(runid_name_path)"` // 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"` ExpiredUnix timeutil.TimeStamp `xorm:"index"` // The time when the artifact will be expired }
ActionArtifact is a file that is stored in the artifact storage.
func CreateArtifact ¶
func CreateArtifact(ctx context.Context, t *ActionTask, artifactName, artifactPath string, expiredDays int64) (*ActionArtifact, error)
func ListNeedExpiredArtifacts ¶
func ListNeedExpiredArtifacts(ctx context.Context) ([]*ActionArtifact, error)
ListNeedExpiredArtifacts returns all need expired artifacts but not deleted
func ListPendingDeleteArtifacts ¶
func ListPendingDeleteArtifacts(ctx context.Context, limit int) ([]*ActionArtifact, error)
ListPendingDeleteArtifacts returns all artifacts in pending-delete status. limit is the max number of artifacts to return.
type ActionArtifactMeta ¶
type ActionArtifactMeta struct { ArtifactName string FileSize int64 Status ArtifactStatus }
ActionArtifactMeta is the meta data of an artifact
func ListUploadedArtifactsMeta ¶
func ListUploadedArtifactsMeta(ctx context.Context, runID int64) ([]*ActionArtifactMeta, error)
ListUploadedArtifactsMeta returns all uploaded artifacts meta of a run
type ActionJobList ¶
type ActionJobList []*ActionRunJob
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:"-"` ScheduleID int64 Ref string `xorm:"index"` // the commit/tag/… that caused the run IsRefDeleted bool `xorm:"-"` 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 // the webhook event that causes the workflow to run EventPayload string `xorm:"LONGTEXT"` TriggerEvent string // the trigger event defined in the `on` configuration of the triggered workflow Status Status `xorm:"index"` Version int `xorm:"version default 0"` // Status could be updated concomitantly, so an optimistic lock is needed // Started and Stopped is used for recording last run time, if rerun happened, they will be reset to 0 Started timeutil.TimeStamp Stopped timeutil.TimeStamp // PreviousDuration is used for recording previous duration PreviousDuration time.Duration Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` }
ActionRun represents a run of a workflow file
func GetRunByIndex ¶
func GetWorkflowLatestRun ¶
func (*ActionRun) GetPullRequestEventPayload ¶
func (run *ActionRun) GetPullRequestEventPayload() (*api.PullRequestPayload, error)
func (*ActionRun) GetPushEventPayload ¶
func (run *ActionRun) GetPushEventPayload() (*api.PushPayload, error)
func (*ActionRun) IsSchedule ¶
func (*ActionRun) LoadAttributes ¶
LoadAttributes load Repo TriggerUser if not loaded
func (*ActionRun) WorkflowLink ¶
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"` Owner *user_model.User `xorm:"-"` RepoID int64 `xorm:"index"` 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 labels defined in state file (default: .runner file) of `act_runner` AgentLabels []string `xorm:"TEXT"` Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` Deleted timeutil.TimeStamp `xorm:"deleted"` }
ActionRunner represents runner machines
It can be:
- global runner, OwnerID is 0 and RepoID is 0
- org/user level runner, OwnerID is org/user ID and RepoID is 0
- repo level runner, OwnerID is 0 and RepoID is repo ID
Please note that it's not acceptable to have both OwnerID and RepoID to be non-zero, or it will be complicated to find runners belonging to a specific owner. For example, conditions like `OwnerID = 1` will also return runner {OwnerID: 1, RepoID: 1}, but it's a repo level runner, not an org/user level runner. To avoid this, make it clear with {OwnerID: 0, RepoID: 1} for repo level runners.
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) BelongsToOwnerName ¶
func (r *ActionRunner) BelongsToOwnerName() string
BelongsToOwnerName before calling, should guarantee that all attributes are loaded
func (*ActionRunner) BelongsToOwnerType ¶
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
if the logic here changed, you should also modify FindRunnerOptions.ToCond
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"` Owner *user_model.User `xorm:"-"` RepoID int64 `xorm:"index"` Repo *repo_model.Repository `xorm:"-"` IsActive bool // true means it can be used Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` Deleted timeutil.TimeStamp `xorm:"deleted"` }
ActionRunnerToken represents runner tokens
It can be:
- global token, OwnerID is 0 and RepoID is 0
- org/user level token, OwnerID is org/user ID and RepoID is 0
- repo level token, OwnerID is 0 and RepoID is repo ID
Please note that it's not acceptable to have both OwnerID and RepoID to be non-zero, or it will be complicated to find tokens belonging to a specific owner. For example, conditions like `OwnerID = 1` will also return token {OwnerID: 1, RepoID: 1}, but it's a repo level token, not an org/user level token. To avoid this, make it clear with {OwnerID: 0, RepoID: 1} for repo level tokens.
func GetLatestRunnerToken ¶
func GetLatestRunnerToken(ctx context.Context, ownerID, repoID int64) (*ActionRunnerToken, error)
GetLatestRunnerToken returns the latest runner token
func GetRunnerToken ¶
func GetRunnerToken(ctx context.Context, token string) (*ActionRunnerToken, error)
GetRunnerToken returns a action runner via token
func NewRunnerToken ¶
func NewRunnerToken(ctx context.Context, ownerID, repoID int64) (*ActionRunnerToken, error)
NewRunnerToken creates a new active runner token and invalidate all old tokens ownerID will be ignored and treated as 0 if repoID is non-zero.
type ActionSchedule ¶
type ActionSchedule struct { ID int64 Title string Specs []string RepoID int64 `xorm:"index"` Repo *repo_model.Repository `xorm:"-"` OwnerID int64 `xorm:"index"` WorkflowID string TriggerUserID int64 TriggerUser *user_model.User `xorm:"-"` Ref string CommitSHA string Event webhook_module.HookEventType EventPayload string `xorm:"LONGTEXT"` Content []byte Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` }
ActionSchedule represents a schedule of a workflow file
type ActionScheduleSpec ¶
type ActionScheduleSpec struct { ID int64 RepoID int64 `xorm:"index"` Repo *repo_model.Repository `xorm:"-"` ScheduleID int64 `xorm:"index"` Schedule *ActionSchedule `xorm:"-"` // Next time the job will run, or the zero time if Cron has not been // started or this entry's schedule is unsatisfiable Next timeutil.TimeStamp `xorm:"index"` // Prev is the last time this job was run, or the zero time if never. Prev timeutil.TimeStamp Spec string Created timeutil.TimeStamp `xorm:"created"` Updated timeutil.TimeStamp `xorm:"updated"` }
ActionScheduleSpec represents a schedule spec of a workflow file
func (*ActionScheduleSpec) Parse ¶
func (s *ActionScheduleSpec) Parse() (cron.Schedule, error)
Parse parses the spec and returns a cron.Schedule Unlike the default cron parser, Parse uses UTC timezone as the default if none is specified.
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 `xorm:"index(stopped_log_expired)"` 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 `xorm:"index(stopped_log_expired)"` // 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 FindOldTasksToExpire ¶
func GetRunningTaskByToken ¶
func GetRunningTaskByToken(ctx context.Context, token string) (*ActionTask, error)
func GetTaskByID ¶
func GetTaskByID(ctx context.Context, id int64) (*ActionTask, error)
func UpdateTaskByState ¶
func UpdateTaskByState(ctx context.Context, runnerID int64, state *runnerv1.TaskState) (*ActionTask, error)
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 ¶
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 ¶
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 ActionTasksVersion ¶
type ActionTasksVersion struct { ID int64 `xorm:"pk autoincr"` OwnerID int64 `xorm:"UNIQUE(owner_repo)"` RepoID int64 `xorm:"INDEX UNIQUE(owner_repo)"` Version int64 CreatedUnix timeutil.TimeStamp `xorm:"created"` UpdatedUnix timeutil.TimeStamp `xorm:"updated"` }
ActionTasksVersion If both ownerID and repoID is zero, its scope is global. If ownerID is not zero and repoID is zero, its scope is org (there is no user-level runner currently). If ownerID is zero and repoID is not zero, its scope is repo.
type ActionVariable ¶
type ActionVariable struct { ID int64 `xorm:"pk autoincr"` OwnerID int64 `xorm:"UNIQUE(owner_repo_name)"` RepoID int64 `xorm:"INDEX UNIQUE(owner_repo_name)"` Name string `xorm:"UNIQUE(owner_repo_name) NOT NULL"` Data string `xorm:"LONGTEXT NOT NULL"` CreatedUnix timeutil.TimeStamp `xorm:"created NOT NULL"` UpdatedUnix timeutil.TimeStamp `xorm:"updated"` }
ActionVariable represents a variable that can be used in actions
It can be:
- global variable, OwnerID is 0 and RepoID is 0
- org/user level variable, OwnerID is org/user ID and RepoID is 0
- repo level variable, OwnerID is 0 and RepoID is repo ID
Please note that it's not acceptable to have both OwnerID and RepoID to be non-zero, or it will be complicated to find variables belonging to a specific owner. For example, conditions like `OwnerID = 1` will also return variable {OwnerID: 1, RepoID: 1}, but it's a repo level variable, not an org/user level variable. To avoid this, make it clear with {OwnerID: 0, RepoID: 1} for repo level variables.
func FindVariables ¶
func FindVariables(ctx context.Context, opts FindVariablesOpts) ([]*ActionVariable, error)
func InsertVariable ¶
type ArtifactStatus ¶
type ArtifactStatus int64
ArtifactStatus is the status of an artifact, uploading, expired or need-delete
const ( ArtifactStatusUploadPending ArtifactStatus = iota + 1 // 1, ArtifactStatusUploadPending is the status of an artifact upload that is pending ArtifactStatusUploadConfirmed // 2, ArtifactStatusUploadConfirmed is the status of an artifact upload that is confirmed ArtifactStatusUploadError // 3, ArtifactStatusUploadError is the status of an artifact upload that is errored ArtifactStatusExpired // 4, ArtifactStatusExpired is the status of an artifact that is expired ArtifactStatusPendingDeletion // 5, ArtifactStatusPendingDeletion is the status of an artifact that is pending deletion ArtifactStatusDeleted // 6, ArtifactStatusDeleted is the status of an artifact that is deleted )
type FindArtifactsOptions ¶
type FindArtifactsOptions struct { db.ListOptions RepoID int64 RunID int64 ArtifactName string Status int }
func (FindArtifactsOptions) ToConds ¶
func (opts FindArtifactsOptions) ToConds() builder.Cond
type FindRunJobOptions ¶
type FindRunJobOptions struct { db.ListOptions RunID int64 RepoID int64 OwnerID int64 CommitSHA string Statuses []Status UpdatedBefore timeutil.TimeStamp }
func (FindRunJobOptions) ToConds ¶
func (opts FindRunJobOptions) ToConds() builder.Cond
type FindRunOptions ¶
type FindRunOptions struct { db.ListOptions RepoID int64 OwnerID int64 WorkflowID string Ref string // the commit/tag/… that caused this workflow TriggerUserID int64 TriggerEvent webhook_module.HookEventType Approved bool // not util.OptionalBool, it works only when it's true Status []Status }
func (FindRunOptions) ToConds ¶
func (opts FindRunOptions) ToConds() builder.Cond
func (FindRunOptions) ToOrders ¶
func (opts FindRunOptions) ToOrders() string
type FindRunnerOptions ¶
type FindRunnerOptions struct { db.ListOptions RepoID int64 OwnerID int64 // it will be ignored if RepoID is set Sort string Filter string IsOnline optional.Option[bool] WithAvailable bool // not only runners belong to, but also runners can be used }
func (FindRunnerOptions) ToConds ¶
func (opts FindRunnerOptions) ToConds() builder.Cond
func (FindRunnerOptions) ToOrders ¶
func (opts FindRunnerOptions) ToOrders() string
type FindScheduleOptions ¶
type FindScheduleOptions struct { db.ListOptions RepoID int64 OwnerID int64 }
func (FindScheduleOptions) ToConds ¶
func (opts FindScheduleOptions) ToConds() builder.Cond
func (FindScheduleOptions) ToOrders ¶
func (opts FindScheduleOptions) ToOrders() string
type FindSpecOptions ¶
type FindSpecOptions struct { db.ListOptions RepoID int64 Next int64 }
func (FindSpecOptions) ToConds ¶
func (opts FindSpecOptions) ToConds() builder.Cond
func (FindSpecOptions) ToOrders ¶
func (opts FindSpecOptions) ToOrders() string
type FindTaskOptions ¶
type FindTaskOptions struct { db.ListOptions RepoID int64 OwnerID int64 CommitSHA string Status Status UpdatedBefore timeutil.TimeStamp StartedBefore timeutil.TimeStamp RunnerID int64 }
func (FindTaskOptions) ToConds ¶
func (opts FindTaskOptions) ToConds() builder.Cond
func (FindTaskOptions) ToOrders ¶
func (opts FindTaskOptions) ToOrders() string
type FindVariablesOpts ¶
type FindVariablesOpts struct { db.ListOptions RepoID int64 OwnerID int64 // it will be ignored if RepoID is set Name string }
func (FindVariablesOpts) ToConds ¶
func (opts FindVariablesOpts) ToConds() builder.Cond
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 (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 ScheduleList ¶
type ScheduleList []*ActionSchedule
func (ScheduleList) GetRepoIDs ¶
func (schedules ScheduleList) GetRepoIDs() []int64
func (ScheduleList) GetUserIDs ¶
func (schedules ScheduleList) GetUserIDs() []int64
GetUserIDs returns a slice of user's id
func (ScheduleList) LoadTriggerUser ¶
func (schedules ScheduleList) LoadTriggerUser(ctx context.Context) error
type SpecList ¶
type SpecList []*ActionScheduleSpec
func (SpecList) GetRepoIDs ¶
func (SpecList) GetScheduleIDs ¶
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 AggregateJobStatus ¶
func AggregateJobStatus(jobs []*ActionRunJob) Status
func (Status) IsCancelled ¶
func (Status) LocaleString ¶
func (s Status) LocaleString(lang translation.Locale) string
LocaleString returns the locale string name of the Status
type StatusInfo ¶
func GetStatusInfoList ¶
func GetStatusInfoList(ctx context.Context) []StatusInfo
GetStatusInfoList returns a slice of StatusInfo