Documentation ¶
Index ¶
- Constants
- func CreateExecutionRecord(j *Job, t time.Time, rs string, success bool)
- func CreateJobKey(id string) string
- func DeleteJob(hash string) error
- func GetIDFromKey(key string) string
- func GetJobs(nodeID string) (jobs map[string]*Job, err error)
- func PutJob(j *Job) error
- func SSHClient(hostport string, username string) (*ssh.Client, error)
- func SSHClientTo(hostport string, username, password string) (*ssh.Client, error)
- func UnifiedLogin(login *model.Login) (*ssh.Client, error)
- func WatchJobs() client.WatchChan
- type Cmd
- type Event
- type ExecutionRecord
- type Job
- func (j *Job) Avg(t, et time.Time)
- func (j *Job) Check() error
- func (j *Job) Cmds() (cmds map[string]*Cmd)
- func (j *Job) CountRunning() (int64, error)
- func (j *Job) Decode(data []byte) error
- func (j *Job) Fail(t time.Time, msg string)
- func (j Job) IsRunOn(nodeID string) bool
- func (j *Job) Key() string
- func (j *Job) Notify(t time.Time, msg string)
- func (j *Job) ResolveShell() error
- func (j *Job) Run(nid string) bool
- func (j *Job) RunBuildInWithRecovery(nid string)
- func (j *Job) RunWithRecovery()
- func (j *Job) ShortName() string
- func (j *Job) String() string
- func (j *Job) Success(t time.Time, out string)
- func (j *Job) Valid() error
- func (j *Job) ValidRules() error
- type Process
- type Rule
- type RuleMode
- type RunStatus
- type Scheduler
Constants ¶
View Source
const ( KindCommon = iota KindAlone // 任何时间段只允许单机执行 KindInterval // 一个任务执行间隔内允许执行一次 )
View Source
const (
DefaultJobGroup = "default"
)
Variables ¶
This section is empty.
Functions ¶
func CreateExecutionRecord ¶
CreateExecutionRecord 创建存储记录
func SSHClientTo ¶
Types ¶
type ExecutionRecord ¶
type ExecutionRecord struct { ID string `json:"id"` JobID string `json:"job_id"` // 任务 Id,索引 TaskID string `json:"task_id"` User string `json:"user"` // 执行此次任务的用户 Name string `json:"name"` // 任务名称 Node string `json:"node"` // 运行此次任务的节点 ip,索引 Command string `json:"command,omitempty"` // 执行的命令,包括参数 Output string `json:"output"` // 任务输出的所有内容 Success bool `json:"success"` // 是否执行成功 BeginTime time.Time `json:"beginTime"` // 任务开始执行时间,精确到毫秒,索引 EndTime time.Time `json:"endTime"` // 任务执行完毕时间,精确到毫秒 IsHandle bool `json:"is_handle"` //是否已经处理 HandleTime time.Time `json:"handle_time"` //处理时间 }
ExecutionRecord 任务执行记录
func GetExecutionRecordByID ¶
func GetExecutionRecordByID(id string) (l *ExecutionRecord, err error)
GetExecutionRecordByID 获取执行记录
func GetJobExecutionRecords ¶
func GetJobExecutionRecords(JobID string) ([]*ExecutionRecord, error)
GetJobExecutionRecords 获取某个任务执行记录
func ParseExecutionRecord ¶
func ParseExecutionRecord(body []byte) (e ExecutionRecord)
ParseExecutionRecord 解析
func (ExecutionRecord) CompleteHandle ¶
func (e ExecutionRecord) CompleteHandle()
CompleteHandle 完成处理记录 master节点处理完成后调用
func (ExecutionRecord) IsHandleRight ¶
func (e ExecutionRecord) IsHandleRight() bool
IsHandleRight 是否具有处理结果权限
func (ExecutionRecord) String ¶
func (e ExecutionRecord) String() string
type Job ¶
type Job struct { ID string `json:"id"` TaskID string `json:"taskID"` EventID string `json:"event_id"` NodeID string `json:"node_id"` Hash string `json:"hash"` Name string `json:"name"` Command string `json:"cmd"` Stdin string `json:"stdin"` Envs []string `json:"envs"` User string `json:"user"` //rules 为nil 即当前任务是一次任务 Rules *Rule `json:"rule"` Pause bool `json:"pause"` // 可手工控制的状态 Timeout int64 `json:"timeout"` // 任务执行时间超时设置,大于 0 时有效 // 执行任务失败重试次数 // 默认为 0,不重试 Retry int `json:"retry"` // 执行任务失败重试时间间隔 // 单位秒,如果不大于 0 则马上重试 Interval int `json:"interval"` // 任务类型 // 0: 单次任务 // 1: 循环任务 Kind int `json:"kind"` // 平均执行时间,单位 ms AvgTime int64 `json:"avg_time"` // 控制同时执行任务数 Count *int64 `json:"-"` Scheduler *Scheduler RunStatus *RunStatus // contains filtered or unexported fields }
Job 需要执行的任务
func CreateJobFromTask ¶
CreateJobFromTask 从task创建job
func GetJobAndRev ¶
GetJobAndRev get job
func GetJobFromKv ¶
GetJobFromKv Create job from etcd value
func (*Job) RunBuildInWithRecovery ¶
RunBuildInWithRecovery run build should delete
type Process ¶
type Process struct { ID string `json:"id"` // pid JobID string `json:"jobId"` Group string `json:"group"` NodeID string `json:"nodeId"` Time time.Time `json:"time"` // 开始执行时间 // contains filtered or unexported fields }
当前执行中的任务信息 key: /cronsun/proc/node/group/jobId/pid value: 开始执行时间 key 会自动过期,防止进程意外退出后没有清除相关 key,过期时间可配置
func GetProcFromKey ¶
type Rule ¶
type Rule struct { ID string `json:"id"` Mode RuleMode `json:"mode"` //once, Timer string `json:"timer"` Labels map[string]string `json:"labels"` Schedule cron.Schedule `json:"-"` }
Rule 任务规则
type RuleMode ¶
type RuleMode string
RuleMode RuleMode
var Cycle RuleMode = "cycle"
Cycle 循环运行
var ManyOnce RuleMode = "manyonce"
ManyOnce 多次运行
var OnlyOnce RuleMode = "onlyonce"
OnlyOnce 只能一次
Click to show internal directories.
Click to hide internal directories.