Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 27 additions & 20 deletions pkg/microservice/aslan/config/consts.go
Original file line number Diff line number Diff line change
Expand Up @@ -633,38 +633,45 @@ const (
type ReleasePlanStatus string

const (
ReleasePlanStatusPlanning ReleasePlanStatus = "planning"
ReleasePlanStatusWaitForApprove ReleasePlanStatus = "wait_for_approval"
ReleasePlanStatusExecuting ReleasePlanStatus = "executing"
ReleasePlanStatusApprovalDenied ReleasePlanStatus = "denied"
ReleasePlanStatusWaitForApproveExternalCheck ReleasePlanStatus = "wait_for_approval_external_check"
ReleasePlanStatusWaitForExecuteExternalCheck ReleasePlanStatus = "wait_for_execute_external_check"
ReleasePlanStatusWaitForAllDoneExternalCheck ReleasePlanStatus = "wait_for_all_done_external_check"
ReleasePlanStatusTimeoutForWindow ReleasePlanStatus = "timeout"
ReleasePlanStatusSuccess ReleasePlanStatus = "success"
ReleasePlanStatusWaitForApproveExternalCheckFailed ReleasePlanStatus = "wait_for_approval_external_check_failed"
ReleasePlanStatusPlanning ReleasePlanStatus = "planning"
ReleasePlanStatusFinishPlanning ReleasePlanStatus = "finish_planning"
ReleasePlanStatusWaitForApprove ReleasePlanStatus = "wait_for_approval"
ReleasePlanStatusExecuting ReleasePlanStatus = "executing"
ReleasePlanStatusApprovalDenied ReleasePlanStatus = "denied"
ReleasePlanStatusWaitForFinishPlanningExternalCheck ReleasePlanStatus = "wait_for_finish_planning_external_check"
// ReleasePlanStatusWaitForApproveExternalCheck ReleasePlanStatus = "wait_for_approval_external_check"
ReleasePlanStatusWaitForExecuteExternalCheck ReleasePlanStatus = "wait_for_execute_external_check"
ReleasePlanStatusWaitForAllDoneExternalCheck ReleasePlanStatus = "wait_for_all_done_external_check"
ReleasePlanStatusTimeoutForWindow ReleasePlanStatus = "timeout"
ReleasePlanStatusSuccess ReleasePlanStatus = "success"
ReleasePlanStatusWaitForFinishPlanningExternalCheckFailed ReleasePlanStatus = "wait_for_finish_planning_external_check_failed"
// ReleasePlanStatusWaitForApproveExternalCheckFailed ReleasePlanStatus = "wait_for_approval_external_check_failed"
ReleasePlanStatusWaitForExecuteExternalCheckFailed ReleasePlanStatus = "wait_for_execute_external_check_failed"
ReleasePlanStatusWaitForAllDoneExternalCheckFailed ReleasePlanStatus = "wait_for_all_done_external_check_failed"
ReleasePlanStatusCancel ReleasePlanStatus = "cancel"
)

// ReleasePlanStatusMap is a map of status and its available next status
var ReleasePlanStatusMap = map[ReleasePlanStatus][]ReleasePlanStatus{
ReleasePlanStatusPlanning: {ReleasePlanStatusWaitForApprove, ReleasePlanStatusExecuting, ReleasePlanStatusWaitForApproveExternalCheck, ReleasePlanStatusWaitForExecuteExternalCheck, ReleasePlanStatusWaitForAllDoneExternalCheck},
ReleasePlanStatusWaitForApprove: {ReleasePlanStatusPlanning, ReleasePlanStatusExecuting, ReleasePlanStatusWaitForAllDoneExternalCheck, ReleasePlanStatusCancel},
ReleasePlanStatusExecuting: {ReleasePlanStatusPlanning, ReleasePlanStatusSuccess, ReleasePlanStatusCancel, ReleasePlanStatusWaitForExecuteExternalCheck},
ReleasePlanStatusTimeoutForWindow: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusApprovalDenied: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForApproveExternalCheck: {ReleasePlanStatusWaitForApprove, ReleasePlanStatusWaitForApproveExternalCheckFailed, ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForExecuteExternalCheck: {ReleasePlanStatusExecuting, ReleasePlanStatusWaitForExecuteExternalCheckFailed, ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForAllDoneExternalCheck: {ReleasePlanStatusSuccess, ReleasePlanStatusWaitForAllDoneExternalCheckFailed, ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForApproveExternalCheckFailed: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusPlanning: {ReleasePlanStatusFinishPlanning},
ReleasePlanStatusFinishPlanning: {ReleasePlanStatusPlanning, ReleasePlanStatusWaitForApprove, ReleasePlanStatusExecuting, ReleasePlanStatusWaitForFinishPlanningExternalCheck, ReleasePlanStatusWaitForExecuteExternalCheck},
ReleasePlanStatusWaitForApprove: {ReleasePlanStatusPlanning, ReleasePlanStatusExecuting, ReleasePlanStatusWaitForAllDoneExternalCheck, ReleasePlanStatusCancel},
ReleasePlanStatusExecuting: {ReleasePlanStatusPlanning, ReleasePlanStatusSuccess, ReleasePlanStatusCancel, ReleasePlanStatusWaitForExecuteExternalCheck},
ReleasePlanStatusTimeoutForWindow: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusApprovalDenied: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForFinishPlanningExternalCheck: {ReleasePlanStatusFinishPlanning, ReleasePlanStatusWaitForFinishPlanningExternalCheckFailed, ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
// ReleasePlanStatusWaitForApproveExternalCheck: {ReleasePlanStatusWaitForApprove, ReleasePlanStatusWaitForApproveExternalCheckFailed, ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForExecuteExternalCheck: {ReleasePlanStatusExecuting, ReleasePlanStatusWaitForExecuteExternalCheckFailed, ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForAllDoneExternalCheck: {ReleasePlanStatusSuccess, ReleasePlanStatusWaitForAllDoneExternalCheckFailed, ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForFinishPlanningExternalCheckFailed: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
// ReleasePlanStatusWaitForApproveExternalCheckFailed: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForExecuteExternalCheckFailed: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
ReleasePlanStatusWaitForAllDoneExternalCheckFailed: {ReleasePlanStatusPlanning, ReleasePlanStatusCancel},
}

var ReleasePlanExternalCheckNextStatusMap = map[ReleasePlanStatus]ReleasePlanStatus{
ReleasePlanStatusWaitForApproveExternalCheck: ReleasePlanStatusWaitForApprove,
ReleasePlanStatusWaitForFinishPlanningExternalCheck: ReleasePlanStatusFinishPlanning,
// ReleasePlanStatusWaitForApproveExternalCheck: ReleasePlanStatusWaitForApprove,
ReleasePlanStatusWaitForExecuteExternalCheck: ReleasePlanStatusExecuting,
ReleasePlanStatusWaitForAllDoneExternalCheck: ReleasePlanStatusSuccess,
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ type ReleasePlan struct {
ManagerID string `bson:"manager_id" yaml:"manager_id" json:"manager_id"`
ApproverID string `bson:"approver_id" yaml:"approver_id" json:"approver_id"`
StartTime int64 `bson:"start_time" yaml:"start_time" json:"start_time"`
EndTime int64 `bson:"end_time" yaml:"end_time" json:"end_time"`
EndTime int64 `bson:"end_time" yaml:"end_time" json:"end_time"`
ScheduleExecuteTime int64 `bson:"schedule_execute_time" yaml:"schedule_execute_time" json:"schedule_execute_time"`
Description string `bson:"description" yaml:"description" json:"description"`
CreatedBy string `bson:"created_by" yaml:"created_by" json:"created_by"`
CreateTime int64 `bson:"create_time" yaml:"create_time" json:"create_time"`
UpdatedBy string `bson:"updated_by" yaml:"updated_by" json:"updated_by"`
UpdateTime int64 `bson:"update_time" yaml:"update_time" json:"update_time"`
Description string `bson:"description" yaml:"description" json:"description"`
CreatedBy string `bson:"created_by" yaml:"created_by" json:"created_by"`
CreateTime int64 `bson:"create_time" yaml:"create_time" json:"create_time"`
UpdatedBy string `bson:"updated_by" yaml:"updated_by" json:"updated_by"`
UpdateTime int64 `bson:"update_time" yaml:"update_time" json:"update_time"`
JiraSprintAssociation *ReleasePlanJiraSprintAssociation `bson:"jira_sprint_association" yaml:"jira_sprint_association" json:"jira_sprint_association"`

Approval *Approval `bson:"approval" yaml:"approval" json:"approval,omitempty"`
Expand All @@ -46,17 +46,20 @@ type ReleasePlan struct {

Status config.ReleasePlanStatus `bson:"status" yaml:"status" json:"status"`

PlanningTime int64 `bson:"planning_time" yaml:"planning_time" json:"planning_time"`
ApprovalTime int64 `bson:"approval_time" yaml:"approval_time" json:"approval_time"`
ExecutingTime int64 `bson:"executing_time" yaml:"executing_time" json:"executing_time"`
SuccessTime int64 `bson:"success_time" yaml:"success_time" json:"success_time"`
PlanningTime int64 `bson:"planning_time" yaml:"planning_time" json:"planning_time"`
FinishPlanningTime int64 `bson:"finish_planning_time" yaml:"finish_planning_time" json:"finish_planning_time"`
ApprovalTime int64 `bson:"approval_time" yaml:"approval_time" json:"approval_time"`
ExecutingTime int64 `bson:"executing_time" yaml:"executing_time" json:"executing_time"`
SuccessTime int64 `bson:"success_time" yaml:"success_time" json:"success_time"`

InstanceCode string `bson:"instance_code" yaml:"instance_code" json:"instance_code"`
HookSettings *HookSettings `bson:"hook_settings" yaml:"hook_settings" json:"hook_settings"`

WaitForApproveExternalCheckTime int64 `bson:"wait_for_approve_external_check_time" yaml:"wait_for_approve_external_check_time" json:"wait_for_approve_external_check_time"`
WaitForExecuteExternalCheckTime int64 `bson:"wait_for_execute_external_check_time" yaml:"wait_for_execute_external_check_time" json:"wait_for_execute_external_check_time"`
WaitForAllDoneExternalCheckTime int64 `bson:"wait_for_all_done_external_check_time" yaml:"wait_for_all_done_external_check_time" json:"wait_for_all_done_external_check_time"`
ExternalCheckFailedReason string `bson:"external_check_failed_reason" yaml:"external_check_failed_reason" json:"external_check_failed_reason"`
WaitForFinishPlanningExternalCheckTime int64 `bson:"wait_for_finish_planning_external_check_time" yaml:"wait_for_finish_planning_external_check_time" json:"wait_for_finish_planning_external_check_time"`
WaitForApproveExternalCheckTime int64 `bson:"wait_for_approve_external_check_time" yaml:"wait_for_approve_external_check_time" json:"wait_for_approve_external_check_time"`
WaitForExecuteExternalCheckTime int64 `bson:"wait_for_execute_external_check_time" yaml:"wait_for_execute_external_check_time" json:"wait_for_execute_external_check_time"`
WaitForAllDoneExternalCheckTime int64 `bson:"wait_for_all_done_external_check_time" yaml:"wait_for_all_done_external_check_time" json:"wait_for_all_done_external_check_time"`
ExternalCheckFailedReason string `bson:"external_check_failed_reason" yaml:"external_check_failed_reason" json:"external_check_failed_reason"`
}

type HookSettings struct {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,8 @@ func (r *ReleasePlanHookSettings) ToHookSettings() *HookSettings {
type ReleasePlanHookEvent string

const (
ReleasePlanHookEventSubmitApproval ReleasePlanHookEvent = "submit_approval"
ReleasePlanHookEventFinishPlanning ReleasePlanHookEvent = "finish_planning"
// ReleasePlanHookEventSubmitApproval ReleasePlanHookEvent = "submit_approval"
ReleasePlanHookEventStartExecute ReleasePlanHookEvent = "start_execute"
ReleasePlanHookEventAllJobDone ReleasePlanHookEvent = "all_job_done"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ type Approval struct {
type NativeApproval struct {
Timeout int `bson:"timeout" yaml:"timeout" json:"timeout"`
ApproveUsers []*User `bson:"approve_users" yaml:"approve_users" json:"approve_users"`
FloatApproveUsers []*User `bson:"-" yaml:"flat_approve_users" json:"flat_approve_users"`
FloatApproveUsers []*User `bson:"-" yaml:"flat_approve_users" json:"flat_approve_users"`
NeededApprovers int `bson:"needed_approvers" yaml:"needed_approvers" json:"needed_approvers"`
RejectOrApprove config.ApprovalStatus `bson:"reject_or_approve" yaml:"-" json:"reject_or_approve"`
// InstanceCode: native approval instance code, save for working after restart aslan
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,8 @@ type ReleasePlanHookBody struct {
UpdatedBy string `json:"updated_by"`
// 更新时间
UpdateTime int64 `json:"update_time"`
// 实例代码
InstanceCode string `json:"instance_code"`

// 发布任务列表
Jobs []*ReleasePlanHookJob `json:"jobs"`
Expand Down
Loading