* add devops client interface Signed-off-by: runzexia <runzexia@yunify.com> * direct return jenkins Signed-off-by: runzexia <runzexia@yunify.com> * add some interface Signed-off-by: runzexia <runzexia@yunify.com> * update Signed-off-by: runzexia <runzexia@yunify.com> * update interface Signed-off-by: runzexia <runzexia@yunify.com> * update Signed-off-by: runzexia <runzexia@yunify.com> * credential op structs Signed-off-by: runzexia <runzexia@yunify.com> * status Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * credential handler Signed-off-by: runzexia <runzexia@yunify.com> * update devopsoperator func Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * get build sonar Signed-off-by: runzexia <runzexia@yunify.com> * sonar handler * mv code to cilent Signed-off-by: runzexia <runzexia@yunify.com> * update Signed-off-by: runzexia <runzexia@yunify.com> * project member handler Signed-off-by: runzexia <runzexia@yunify.com> * update pipeline operator interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add tenant devops handler Signed-off-by: runzexia <runzexia@yunify.com> * update merge Signed-off-by: runzexia <runzexia@yunify.com> * clean Signed-off-by: runzexia <runzexia@yunify.com> * fmt Signed-off-by: runzexia <runzexia@yunify.com> * update ListPipelineRuns Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * complate pipelineOperator interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update HttpParameters Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add pipeline steps interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update pipeline GetNodesDetail Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add s2i api Signed-off-by: runzexia <runzexia@yunify.com> * add branch pipeline interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add scan branch interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add common interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add SCM interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add handler Signed-off-by: runzexia <runzexia@yunify.com> * add fake s3 Signed-off-by: runzexia <runzexia@yunify.com> * add webhook&check interface and update handler Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * clean Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * clean Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * format Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add some func Signed-off-by: runzexia <runzexia@yunify.com> * clean code Signed-off-by: runzexia <runzexia@yunify.com> * implement interface Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * fix interface GetBranchArtifacts Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add s2ibinary upload test Signed-off-by: runzexia <runzexia@yunify.com> * tenant devops Signed-off-by: runzexia <runzexia@yunify.com> * update tenant Signed-off-by: runzexia <runzexia@yunify.com> * fake Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add some unit test Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * add devops tenant handler Signed-off-by: runzexia <runzexia@yunify.com> * status Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * status Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * status Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update fake test Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update unit test and fake data Signed-off-by: zhuxiaoyang <sunzhu@yunify.com> * update Co-authored-by: Xiaoyang Zhu <sunzhu@yunify.com>
145 lines
10 KiB
Go
145 lines
10 KiB
Go
package devops
|
|
|
|
const (
|
|
NoScmPipelineType = "pipeline"
|
|
MultiBranchPipelineType = "multi-branch-pipeline"
|
|
)
|
|
|
|
type Parameters []*Parameter
|
|
|
|
var ParameterTypeMap = map[string]string{
|
|
"hudson.model.StringParameterDefinition": "string",
|
|
"hudson.model.ChoiceParameterDefinition": "choice",
|
|
"hudson.model.TextParameterDefinition": "text",
|
|
"hudson.model.BooleanParameterDefinition": "boolean",
|
|
"hudson.model.FileParameterDefinition": "file",
|
|
"hudson.model.PasswordParameterDefinition": "password",
|
|
}
|
|
|
|
type ProjectPipeline struct {
|
|
Type string `json:"type" description:"type of devops pipeline, in scm or no scm"`
|
|
Pipeline *NoScmPipeline `json:"pipeline,omitempty" description:"no scm pipeline structs"`
|
|
MultiBranchPipeline *MultiBranchPipeline `json:"multi_branch_pipeline,omitempty" description:"in scm pipeline structs"`
|
|
}
|
|
|
|
type NoScmPipeline struct {
|
|
Name string `json:"name" description:"name of pipeline"`
|
|
Description string `json:"descriptio,omitempty" description:"description of pipeline"`
|
|
Discarder *DiscarderProperty `json:"discarder,omitempty" description:"Discarder of pipeline, managing when to drop a pipeline"`
|
|
Parameters *Parameters `json:"parameters,omitempty" description:"Parameters define of pipeline,user could pass param when run pipeline"`
|
|
DisableConcurrent bool `json:"disable_concurrent,omitempty" mapstructure:"disable_concurrent" description:"Whether to prohibit the pipeline from running in parallel"`
|
|
TimerTrigger *TimerTrigger `json:"timer_trigger,omitempty" mapstructure:"timer_trigger" description:"Timer to trigger pipeline run"`
|
|
RemoteTrigger *RemoteTrigger `json:"remote_trigger,omitempty" mapstructure:"remote_trigger" description:"Remote api define to trigger pipeline run"`
|
|
Jenkinsfile string `json:"jenkinsfile,omitempty" description:"Jenkinsfile's content'"`
|
|
}
|
|
|
|
type MultiBranchPipeline struct {
|
|
Name string `json:"name" description:"name of pipeline"`
|
|
Description string `json:"descriptio,omitempty" description:"description of pipeline"`
|
|
Discarder *DiscarderProperty `json:"discarder,omitempty" description:"Discarder of pipeline, managing when to drop a pipeline"`
|
|
TimerTrigger *TimerTrigger `json:"timer_trigger,omitempty" mapstructure:"timer_trigger" description:"Timer to trigger pipeline run"`
|
|
SourceType string `json:"source_type" description:"type of scm, such as github/git/svn"`
|
|
GitSource *GitSource `json:"git_source,omitempty" description:"git scm define"`
|
|
GitHubSource *GithubSource `json:"github_source,omitempty" description:"github scm define"`
|
|
SvnSource *SvnSource `json:"svn_source,omitempty" description:"multi branch svn scm define"`
|
|
SingleSvnSource *SingleSvnSource `json:"single_svn_source,omitempty" description:"single branch svn scm define"`
|
|
BitbucketServerSource *BitbucketServerSource `json:"bitbucket_server_source,omitempty" description:"bitbucket server scm defile"`
|
|
ScriptPath string `json:"script_path" mapstructure:"script_path" description:"script path in scm"`
|
|
MultiBranchJobTrigger *MultiBranchJobTrigger `json:"multibranch_job_trigger,omitempty" mapstructure:"multibranch_job_trigger" description:"Pipeline tasks that need to be triggered when branch creation/deletion"`
|
|
}
|
|
|
|
type GitSource struct {
|
|
ScmId string `json:"scm_id,omitempty" description:"uid of scm"`
|
|
Url string `json:"url,omitempty" mapstructure:"url" description:"url of git source"`
|
|
CredentialId string `json:"credential_id,omitempty" mapstructure:"credential_id" description:"credential id to access git source"`
|
|
DiscoverBranches bool `json:"discover_branches,omitempty" mapstructure:"discover_branches" description:"Whether to discover a branch"`
|
|
CloneOption *GitCloneOption `json:"git_clone_option,omitempty" mapstructure:"git_clone_option" description:"advavced git clone options"`
|
|
RegexFilter string `json:"regex_filter,omitempty" mapstructure:"regex_filter" description:"Regex used to match the name of the branch that needs to be run"`
|
|
}
|
|
|
|
type GithubSource struct {
|
|
ScmId string `json:"scm_id,omitempty" description:"uid of scm"`
|
|
Owner string `json:"owner,omitempty" mapstructure:"owner" description:"owner of github repo"`
|
|
Repo string `json:"repo,omitempty" mapstructure:"repo" description:"repo name of github repo"`
|
|
CredentialId string `json:"credential_id,omitempty" mapstructure:"credential_id" description:"credential id to access github source"`
|
|
ApiUri string `json:"api_uri,omitempty" mapstructure:"api_uri" description:"The api url can specify the location of the github apiserver.For private cloud configuration"`
|
|
DiscoverBranches int `json:"discover_branches,omitempty" mapstructure:"discover_branches" description:"Discover branch configuration"`
|
|
DiscoverPRFromOrigin int `json:"discover_pr_from_origin,omitempty" mapstructure:"discover_pr_from_origin" description:"Discover origin PR configuration"`
|
|
DiscoverPRFromForks *DiscoverPRFromForks `json:"discover_pr_from_forks,omitempty" mapstructure:"discover_pr_from_forks" description:"Discover fork PR configuration"`
|
|
CloneOption *GitCloneOption `json:"git_clone_option,omitempty" mapstructure:"git_clone_option" description:"advavced git clone options"`
|
|
RegexFilter string `json:"regex_filter,omitempty" mapstructure:"regex_filter" description:"Regex used to match the name of the branch that needs to be run"`
|
|
}
|
|
|
|
type MultiBranchJobTrigger struct {
|
|
CreateActionJobsToTrigger string `json:"create_action_job_to_trigger,omitempty" description:"pipeline name to trigger"`
|
|
DeleteActionJobsToTrigger string `json:"delete_action_job_to_trigger,omitempty" description:"pipeline name to trigger"`
|
|
}
|
|
|
|
type BitbucketServerSource struct {
|
|
ScmId string `json:"scm_id,omitempty" description:"uid of scm"`
|
|
Owner string `json:"owner,omitempty" mapstructure:"owner" description:"owner of github repo"`
|
|
Repo string `json:"repo,omitempty" mapstructure:"repo" description:"repo name of github repo"`
|
|
CredentialId string `json:"credential_id,omitempty" mapstructure:"credential_id" description:"credential id to access github source"`
|
|
ApiUri string `json:"api_uri,omitempty" mapstructure:"api_uri" description:"The api url can specify the location of the github apiserver.For private cloud configuration"`
|
|
DiscoverBranches int `json:"discover_branches,omitempty" mapstructure:"discover_branches" description:"Discover branch configuration"`
|
|
DiscoverPRFromOrigin int `json:"discover_pr_from_origin,omitempty" mapstructure:"discover_pr_from_origin" description:"Discover origin PR configuration"`
|
|
DiscoverPRFromForks *DiscoverPRFromForks `json:"discover_pr_from_forks,omitempty" mapstructure:"discover_pr_from_forks" description:"Discover fork PR configuration"`
|
|
CloneOption *GitCloneOption `json:"git_clone_option,omitempty" mapstructure:"git_clone_option" description:"advavced git clone options"`
|
|
RegexFilter string `json:"regex_filter,omitempty" mapstructure:"regex_filter" description:"Regex used to match the name of the branch that needs to be run"`
|
|
}
|
|
|
|
type GitCloneOption struct {
|
|
Shallow bool `json:"shallow,omitempty" mapstructure:"shallow" description:"Whether to use git shallow clone"`
|
|
Timeout int `json:"timeout,omitempty" mapstructure:"timeout" description:"git clone timeout mins"`
|
|
Depth int `json:"depth,omitempty" mapstructure:"depth" description:"git clone depth"`
|
|
}
|
|
|
|
type SvnSource struct {
|
|
ScmId string `json:"scm_id,omitempty" description:"uid of scm"`
|
|
Remote string `json:"remote,omitempty" description:"remote address url"`
|
|
CredentialId string `json:"credential_id,omitempty" mapstructure:"credential_id" description:"credential id to access svn source"`
|
|
Includes string `json:"includes,omitempty" description:"branches to run pipeline"`
|
|
Excludes string `json:"excludes,omitempty" description:"branches do not run pipeline"`
|
|
}
|
|
type SingleSvnSource struct {
|
|
ScmId string `json:"scm_id,omitempty" description:"uid of scm"`
|
|
Remote string `json:"remote,omitempty" description:"remote address url"`
|
|
CredentialId string `json:"credential_id,omitempty" mapstructure:"credential_id" description:"credential id to access svn source"`
|
|
}
|
|
|
|
type DiscoverPRFromForks struct {
|
|
Strategy int `json:"strategy,omitempty" mapstructure:"strategy" description:"github discover strategy"`
|
|
Trust int `json:"trust,omitempty" mapstructure:"trust" description:"trust user type"`
|
|
}
|
|
|
|
type DiscarderProperty struct {
|
|
DaysToKeep string `json:"days_to_keep,omitempty" mapstructure:"days_to_keep" description:"days to keep pipeline"`
|
|
NumToKeep string `json:"num_to_keep,omitempty" mapstructure:"num_to_keep" description:"nums to keep pipeline"`
|
|
}
|
|
|
|
type Parameter struct {
|
|
Name string `json:"name" description:"name of param"`
|
|
DefaultValue string `json:"default_value,omitempty" mapstructure:"default_value" description:"default value of param"`
|
|
Type string `json:"type" description:"type of param"`
|
|
Description string `json:"description,omitempty" description:"description of pipeline"`
|
|
}
|
|
|
|
type TimerTrigger struct {
|
|
// user in no scm job
|
|
Cron string `json:"cron,omitempty" description:"jenkins cron script"`
|
|
|
|
// use in multi-branch job
|
|
Interval string `json:"interval,omitempty" description:"interval ms"`
|
|
}
|
|
|
|
type RemoteTrigger struct {
|
|
Token string `json:"token,omitempty" description:"remote trigger token"`
|
|
}
|
|
|
|
type ProjectPipelineOperator interface {
|
|
CreateProjectPipeline(projectId string, pipeline *ProjectPipeline) (string, error)
|
|
DeleteProjectPipeline(projectId string, pipelineId string) (string, error)
|
|
UpdateProjectPipeline(projectId string, pipeline *ProjectPipeline) (string, error)
|
|
GetProjectPipelineConfig(projectId, pipelineId string) (*ProjectPipeline, error)
|
|
}
|