Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
水淹萌龙
kubesphere
提交
1e87ad59
K
kubesphere
项目概览
水淹萌龙
/
kubesphere
与 Fork 源项目一致
Fork自
KubeSphere / kubesphere
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kubesphere
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
1e87ad59
编写于
4月 27, 2019
作者:
Z
Zhuxiaoyang
提交者:
zryfish
4月 28, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Dev (#1)
* add api & rename alias Signed-off-by:
N
soulseen
<
sunzhu@yunify.com
>
上级
e26a7a0c
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
1276 addition
and
194 deletion
+1276
-194
pkg/apis/devops/v1alpha2/register.go
pkg/apis/devops/v1alpha2/register.go
+219
-19
pkg/apiserver/devops/devops.go
pkg/apiserver/devops/devops.go
+174
-6
pkg/models/devops/devops.go
pkg/models/devops/devops.go
+180
-38
pkg/models/devops/jkerror.go
pkg/models/devops/jkerror.go
+1
-8
pkg/models/devops/json.go
pkg/models/devops/json.go
+689
-122
pkg/models/devops/urlconfig.go
pkg/models/devops/urlconfig.go
+13
-1
未找到文件。
pkg/apis/devops/v1alpha2/register.go
浏览文件 @
1e87ad59
...
...
@@ -21,11 +21,16 @@ import (
"github.com/emicklei/go-restful"
"github.com/emicklei/go-restful-openapi"
"k8s.io/apimachinery/pkg/runtime/schema"
"kubesphere.io/kubesphere/pkg/apiserver/devops"
devopsapi
"kubesphere.io/kubesphere/pkg/apiserver/devops"
"kubesphere.io/kubesphere/pkg/apiserver/runtime"
"kubesphere.io/kubesphere/pkg/models/devops"
"net/http"
)
const
GroupName
=
"devops.kubesphere.io"
const
(
GroupName
=
"devops.kubesphere.io"
RespMessage
=
"ok"
)
var
GroupVersion
=
schema
.
GroupVersion
{
Group
:
GroupName
,
Version
:
"v1alpha2"
}
...
...
@@ -41,15 +46,17 @@ func addWebService(c *restful.Container) error {
// match Jenkisn api "/blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}"
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}"
)
.
To
(
devops
.
GetPipeline
)
.
To
(
devops
api
.
GetPipeline
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get DevOps Pipelines."
)
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
)))
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
devops
.
Pipeline
{})
.
Writes
(
devops
.
Pipeline
{}))
// match Jenkisn api: "jenkins_api/blue/rest/search"
webservice
.
Route
(
webservice
.
GET
(
"/devops/search"
)
.
To
(
devops
.
SearchPipelines
)
.
To
(
devops
api
.
SearchPipelines
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Search DevOps resource."
)
.
Param
(
webservice
.
QueryParameter
(
"q"
,
"query pipelines"
)
.
...
...
@@ -63,11 +70,13 @@ func addWebService(c *restful.Container) error {
DataFormat
(
"start=%d"
))
.
Param
(
webservice
.
QueryParameter
(
"limit"
,
"limit count"
)
.
Required
(
false
)
.
DataFormat
(
"limit=%d"
)))
DataFormat
(
"limit=%d"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
[]
devops
.
Pipeline
{})
.
Writes
([]
devops
.
Pipeline
{}))
// match Jenkisn api "/blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/runs/"
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}/runs"
)
.
To
(
devops
.
SearchPipelineRuns
)
.
To
(
devops
api
.
SearchPipelineRuns
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Search DevOps Pipelines runs."
)
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
...
...
@@ -77,21 +86,31 @@ func addWebService(c *restful.Container) error {
DataFormat
(
"start=%d"
))
.
Param
(
webservice
.
QueryParameter
(
"limit"
,
"limit count"
)
.
Required
(
false
)
.
DataFormat
(
"limit=%d"
)))
DataFormat
(
"limit=%d"
))
.
Param
(
webservice
.
QueryParameter
(
"branch"
,
"branch "
)
.
Required
(
false
)
.
DataFormat
(
"branch=%s"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
[]
devops
.
PipelineRun
{})
.
Writes
([]
devops
.
PipelineRun
{}))
// match Jenkins api "/blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/branches/{branchName}/runs/{runId}/"
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}"
)
.
To
(
devops
.
GetPipelineRun
)
.
To
(
devops
api
.
GetPipelineRun
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get DevOps Pipelines run."
)
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
Param
(
webservice
.
PathParameter
(
"runId"
,
"pipeline runs id"
)))
Param
(
webservice
.
PathParameter
(
"runId"
,
"pipeline runs id"
))
.
Param
(
webservice
.
QueryParameter
(
"start"
,
"start"
)
.
Required
(
false
)
.
DataFormat
(
"start=%d"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
devops
.
PipelineRun
{})
.
Writes
(
devops
.
PipelineRun
{}))
// match Jenkins api "/blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/branches/{branchName}/runs/{runId}/nodes"
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/nodes"
)
.
To
(
devops
.
GetPipelineRunNodes
)
.
To
(
devops
api
.
GetPipelineRunNodes
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get node on DevOps Pipelines run."
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
...
...
@@ -101,13 +120,16 @@ func addWebService(c *restful.Container) error {
Param
(
webservice
.
QueryParameter
(
"limit"
,
"limit"
)
.
Required
(
false
)
.
DataFormat
(
"limit=%d"
)
.
DefaultValue
(
"limit=10000"
)))
DefaultValue
(
"limit=10000"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
[]
devops
.
Nodes
{})
.
Writes
([]
devops
.
Nodes
{}))
// match "/blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/branches/{branchName}/runs/{runId}/nodes/{nodeId}/steps/{stepId}/log/?start=0"
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/nodes/{nodeId}/steps/{stepId}/log"
)
.
To
(
devops
.
GetStepLog
)
.
To
(
devops
api
.
GetStepLog
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get Pipelines step log."
)
.
Doc
(
"Get pipelines step log."
)
.
Produces
(
"text/plain; charset=utf-8"
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
...
...
@@ -121,20 +143,198 @@ func addWebService(c *restful.Container) error {
// match "/blue/rest/organizations/jenkins/scm/github/validate/"
webservice
.
Route
(
webservice
.
PUT
(
"/devops/scm/{scmId}/validate"
)
.
To
(
devops
.
Validate
)
.
To
(
devops
api
.
Validate
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Validate Github personal access token."
)
.
Param
(
webservice
.
PathParameter
(
"scmId"
,
"SCM id"
)))
Param
(
webservice
.
PathParameter
(
"scmId"
,
"SCM id"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
devops
.
Validates
{})
.
Writes
(
devops
.
Validates
{}))
// match "/blue/rest/organizations/jenkins/scm/{scmId}/organizations/?credentialId=github"
webservice
.
Route
(
webservice
.
GET
(
"/devops/scm/{scmId}/organizations"
)
.
To
(
devops
.
GetOrgSCM
)
.
To
(
devops
api
.
GetSCMOrg
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"List organizations of SCM"
)
.
Param
(
webservice
.
PathParameter
(
"scmId"
,
"SCM id"
))
.
Param
(
webservice
.
QueryParameter
(
"credentialId"
,
"credentialId for SCM"
)
.
Param
(
webservice
.
QueryParameter
(
"credentialId"
,
"credential id for SCM"
)
.
Required
(
true
)
.
DataFormat
(
"credentialId=%s"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
[]
devops
.
SCMOrg
{})
.
Writes
([]
devops
.
SCMOrg
{}))
// match "/blue/rest/organizations/jenkins/scm/{scmId}/organizations/{organizationId}/repositories/?credentialId=&pageNumber&pageSize="
webservice
.
Route
(
webservice
.
GET
(
"/devops/scm/{scmId}/organizations/{organizationId}/repositories"
)
.
To
(
devopsapi
.
GetOrgRepo
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get SCM repositories in an organization"
)
.
Param
(
webservice
.
PathParameter
(
"scmId"
,
"SCM id"
))
.
Param
(
webservice
.
PathParameter
(
"organizationId"
,
"organization Id, such as github username"
))
.
Param
(
webservice
.
QueryParameter
(
"credentialId"
,
"credential id for SCM"
)
.
Required
(
true
)
.
DataFormat
(
"credentialId=%s"
))
.
Param
(
webservice
.
QueryParameter
(
"pageNumber"
,
"page number"
)
.
Required
(
true
)
.
DataFormat
(
"pageNumber=%d"
))
.
Param
(
webservice
.
QueryParameter
(
"pageSize"
,
"page size"
)
.
Required
(
true
)
.
DataFormat
(
"pageSize=%d"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
[]
devops
.
OrgRepo
{})
.
Writes
([]
devops
.
OrgRepo
{}))
// match /blue/rest/organizations/jenkins/pipelines/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/stop/
webservice
.
Route
(
webservice
.
PUT
(
"/devops/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/stop"
)
.
To
(
devopsapi
.
StopPipeline
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Stop pipeline in running"
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
Param
(
webservice
.
PathParameter
(
"runId"
,
"pipeline runs id"
))
.
Param
(
webservice
.
QueryParameter
(
"blocking"
,
"stop and between each retries will sleep"
)
.
Required
(
false
)
.
DataFormat
(
"blocking=%t"
)
.
DefaultValue
(
"blocking=false"
))
.
Param
(
webservice
.
QueryParameter
(
"timeOutInSecs"
,
"the time of stop and between each retries sleep"
)
.
Required
(
false
)
.
DataFormat
(
"timeOutInSecs=%d"
)
.
DefaultValue
(
"timeOutInSecs=10"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
devops
.
StopPipe
{})
.
Writes
(
devops
.
StopPipe
{}))
// match /blue/rest/organizations/jenkins/pipelines/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/replay/
webservice
.
Route
(
webservice
.
POST
(
"/devops/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/replay"
)
.
To
(
devopsapi
.
ReplayPipeline
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Replay pipeline"
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
Param
(
webservice
.
PathParameter
(
"runId"
,
"pipeline runs id"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
devops
.
ReplayPipe
{})
.
Writes
(
devops
.
ReplayPipe
{}))
// match /blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/branches/{branchName}/runs/{runId}/log/?start=0
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/log"
)
.
To
(
devopsapi
.
GetRunLog
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get Pipelines run log."
)
.
Produces
(
"text/plain; charset=utf-8"
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
Param
(
webservice
.
PathParameter
(
"runId"
,
"pipeline runs id"
))
.
Param
(
webservice
.
QueryParameter
(
"start"
,
"start"
)
.
Required
(
true
)
.
DataFormat
(
"credentialId=%s"
)))
DataFormat
(
"start=%d"
)
.
DefaultValue
(
"start=0"
)))
// match /blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/branches/{branchName}/runs/{runId}/artifacts
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/artifacts"
)
.
To
(
devopsapi
.
GetArtifacts
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get pipeline artifacts."
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
Param
(
webservice
.
PathParameter
(
"runId"
,
"pipeline runs id"
))
.
Param
(
webservice
.
QueryParameter
(
"start"
,
"start page"
)
.
Required
(
false
)
.
DataFormat
(
"start=%d"
))
.
Param
(
webservice
.
QueryParameter
(
"limit"
,
"limit count"
)
.
Required
(
false
)
.
DataFormat
(
"limit=%d"
))
.
Returns
(
http
.
StatusOK
,
"The filed of
\"
Url
\"
in response can download artifacts"
,
[]
devops
.
Artifacts
{})
.
Writes
([]
devops
.
Artifacts
{}))
// match /blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/branches/?filter=&start&limit=
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}/branches"
)
.
To
(
devopsapi
.
GetPipeBranch
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get pipeline of branch."
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
QueryParameter
(
"filter"
,
"filter remote"
)
.
Required
(
true
)
.
DataFormat
(
"filter=%s"
))
.
Param
(
webservice
.
QueryParameter
(
"start"
,
"start"
)
.
Required
(
true
)
.
DataFormat
(
"start=%d"
))
.
Param
(
webservice
.
QueryParameter
(
"limit"
,
"limit count"
)
.
Required
(
true
)
.
DataFormat
(
"limit=%d"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
[]
devops
.
PipeBranch
{})
.
Writes
([]
devops
.
PipeBranch
{}))
// /blue/rest/organizations/jenkins/pipelines/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/nodes/{nodeId}/steps/{stepId}
webservice
.
Route
(
webservice
.
POST
(
"/devops/{projectName}/pipelines/{pipelineName}/branches/{branchName}/runs/{runId}/nodes/{nodeId}/steps/{stepId}"
)
.
To
(
devopsapi
.
CheckPipeline
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Pauses pipeline execution and allows the user to interact and control the flow of the build."
)
.
Reads
(
devops
.
CheckPlayload
{})
.
Produces
(
"text/plain; charset=utf-8"
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
Param
(
webservice
.
PathParameter
(
"runId"
,
"pipeline runs id"
))
.
Param
(
webservice
.
PathParameter
(
"nodeId"
,
"pipeline node id"
))
.
Param
(
webservice
.
PathParameter
(
"stepId"
,
"pipeline step id"
)))
// match /job/project-8QnvykoJw4wZ/job/test-1/indexing/consoleText
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipelines/{pipelineName}/console/log"
)
.
To
(
devopsapi
.
GetConsoleLog
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get index console log."
)
.
Produces
(
"text/plain; charset=utf-8"
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
)))
// match /job/{projectName}/job/{pipelineName}/build?delay=0
webservice
.
Route
(
webservice
.
POST
(
"/devops/{projectName}/pipelines/{pipelineName}/scan"
)
.
To
(
devopsapi
.
ScanBranch
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Start a build."
)
.
Produces
(
"text/html; charset=utf-8"
)
.
Param
(
webservice
.
PathParameter
(
"projecFtName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
QueryParameter
(
"delay"
,
"delay time"
)
.
Required
(
true
)
.
DataFormat
(
"delay=%d"
)))
// match /blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/branches/{}/runs/
webservice
.
Route
(
webservice
.
POST
(
"/devops/{projectName}/pipeline/{pipelineName}/branches/{brancheName}/run"
)
.
To
(
devopsapi
.
RunPipeline
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get pipeline artifacts."
)
.
Reads
(
devops
.
RunPayload
{})
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
devops
.
QueuedBlueRun
{})
.
Writes
(
devops
.
QueuedBlueRun
{}))
// match /pipeline_status/blue/rest/organizations/jenkins/pipelines/{projectName}/{pipelineName}/branches/{branchName}/runs/{runId}/nodes/?limit=
webservice
.
Route
(
webservice
.
GET
(
"/devops/{projectName}/pipeline/{pipelineName}/branches/{branchName}/runs/{runId}/nodes/{nodeId}/steps/status"
)
.
To
(
devopsapi
.
GetStepsStatus
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get pipeline steps status."
)
.
Param
(
webservice
.
PathParameter
(
"projectName"
,
"devops project name"
))
.
Param
(
webservice
.
PathParameter
(
"pipelineName"
,
"pipeline name"
))
.
Param
(
webservice
.
PathParameter
(
"branchName"
,
"pipeline branch name"
))
.
Param
(
webservice
.
PathParameter
(
"runId"
,
"pipeline run name"
))
.
Param
(
webservice
.
PathParameter
(
"nodeId"
,
"pipeline node id"
))
.
Param
(
webservice
.
QueryParameter
(
"limit"
,
"limit count"
)
.
Required
(
true
)
.
DataFormat
(
"limit=%d"
))
.
Returns
(
http
.
StatusOK
,
RespMessage
,
[]
devops
.
QueuedBlueRun
{})
.
Writes
([]
devops
.
QueuedBlueRun
{}))
// match /crumbIssuer/api/json/
webservice
.
Route
(
webservice
.
GET
(
"/devops/crumbIssuer"
)
.
To
(
devopsapi
.
GetCrumb
)
.
Metadata
(
restfulspec
.
KeyOpenAPITags
,
tags
)
.
Doc
(
"Get crumb"
)
.
Returns
(
http
.
StatusOK
,
RespMessage
,
devops
.
Crumb
{})
.
Writes
(
devops
.
Crumb
{}))
c
.
Add
(
webservice
)
...
...
pkg/apiserver/devops/devops.go
浏览文件 @
1e87ad59
...
...
@@ -20,7 +20,6 @@ package devops
import
(
"github.com/emicklei/go-restful"
log
"github.com/golang/glog"
"kubesphere.io/kubesphere/pkg/errors"
"kubesphere.io/kubesphere/pkg/models/devops"
"net/http"
)
...
...
@@ -39,7 +38,6 @@ func GetPipeline(req *restful.Request, resp *restful.Response) {
}
func
SearchPipelines
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
res
,
err
:=
devops
.
SearchPipelines
(
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
...
...
@@ -120,10 +118,180 @@ func Validate(req *restful.Request, resp *restful.Response) {
_
,
_
=
resp
.
Write
(
res
)
}
func
Get
OrgSCM
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
func
Get
SCMOrg
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
scmId
:=
req
.
PathParameter
(
"scmId"
)
res
,
err
:=
devops
.
GetOrgSCM
(
scmId
,
req
.
Request
)
res
,
err
:=
devops
.
GetSCMOrg
(
scmId
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
=
resp
.
WriteAsJson
(
res
)
}
func
GetOrgRepo
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
scmId
:=
req
.
PathParameter
(
"scmId"
)
organizationId
:=
req
.
PathParameter
(
"organizationId"
)
res
,
err
:=
devops
.
GetOrgRepo
(
scmId
,
organizationId
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
=
resp
.
WriteAsJson
(
res
)
}
func
StopPipeline
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
branchName
:=
req
.
PathParameter
(
"branchName"
)
runId
:=
req
.
PathParameter
(
"runId"
)
res
,
err
:=
devops
.
StopPipeline
(
projectName
,
pipelineName
,
branchName
,
runId
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
=
resp
.
WriteAsJson
(
res
)
}
func
ReplayPipeline
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
branchName
:=
req
.
PathParameter
(
"branchName"
)
runId
:=
req
.
PathParameter
(
"runId"
)
res
,
err
:=
devops
.
ReplayPipeline
(
projectName
,
pipelineName
,
branchName
,
runId
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
=
resp
.
WriteAsJson
(
res
)
}
func
GetRunLog
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
branchName
:=
req
.
PathParameter
(
"branchName"
)
runId
:=
req
.
PathParameter
(
"runId"
)
res
,
err
:=
devops
.
GetRunLog
(
projectName
,
pipelineName
,
branchName
,
runId
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
,
_
=
resp
.
Write
(
res
)
}
func
GetArtifacts
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
branchName
:=
req
.
PathParameter
(
"branchName"
)
runId
:=
req
.
PathParameter
(
"runId"
)
res
,
err
:=
devops
.
GetArtifacts
(
projectName
,
pipelineName
,
branchName
,
runId
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
=
resp
.
WriteAsJson
(
res
)
}
func
GetPipeBranch
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
res
,
err
:=
devops
.
GetPipeBranch
(
projectName
,
pipelineName
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
=
resp
.
WriteAsJson
(
res
)
}
func
CheckPipeline
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
branchName
:=
req
.
PathParameter
(
"branchName"
)
runId
:=
req
.
PathParameter
(
"runId"
)
nodeId
:=
req
.
PathParameter
(
"nodeId"
)
stepId
:=
req
.
PathParameter
(
"stepId"
)
res
,
err
:=
devops
.
CheckPipeline
(
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
,
stepId
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
,
_
=
resp
.
Write
(
res
)
}
func
GetConsoleLog
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
res
,
err
:=
devops
.
GetConsoleLog
(
projectName
,
pipelineName
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
,
_
=
resp
.
Write
(
res
)
}
func
ScanBranch
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
res
,
err
:=
devops
.
ScanBranch
(
projectName
,
pipelineName
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
,
_
=
resp
.
Write
(
res
)
}
func
RunPipeline
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
branchName
:=
req
.
PathParameter
(
"branchName"
)
res
,
err
:=
devops
.
RunPipeline
(
projectName
,
pipelineName
,
branchName
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
=
resp
.
WriteAsJson
(
res
)
}
func
GetStepsStatus
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
projectName
:=
req
.
PathParameter
(
"projectName"
)
pipelineName
:=
req
.
PathParameter
(
"pipelineName"
)
branchName
:=
req
.
PathParameter
(
"branchName"
)
runId
:=
req
.
PathParameter
(
"runId"
)
nodeId
:=
req
.
PathParameter
(
"nodeId"
)
res
,
err
:=
devops
.
GetStepsStatus
(
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
,
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
}
_
=
resp
.
WriteAsJson
(
res
)
}
func
GetCrumb
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
res
,
err
:=
devops
.
GetCrumb
(
req
.
Request
)
if
err
!=
nil
{
parseErr
(
err
,
resp
)
return
...
...
@@ -135,9 +303,9 @@ func GetOrgSCM(req *restful.Request, resp *restful.Response) {
func
parseErr
(
err
error
,
resp
*
restful
.
Response
)
{
log
.
Error
(
err
)
if
jErr
,
ok
:=
err
.
(
*
devops
.
JkError
);
ok
{
_
=
resp
.
Write
HeaderAndEntity
(
jErr
.
Code
,
err
)
_
=
resp
.
Write
Error
(
jErr
.
Code
,
err
)
}
else
{
_
=
resp
.
Write
HeaderAndEntity
(
http
.
StatusInternalServerError
,
errors
.
Wrap
(
err
)
)
_
=
resp
.
Write
Error
(
http
.
StatusInternalServerError
,
err
)
}
return
}
pkg/models/devops/devops.go
浏览文件 @
1e87ad59
...
...
@@ -39,15 +39,23 @@ func init() {
func
GetPipeline
(
projectName
,
pipelineName
string
,
req
*
http
.
Request
)
(
*
Pipeline
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetPipelineUrl
,
projectName
,
pipelineName
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
=
new
(
Pipeline
)
resBody
,
err
:=
jenkinsClient
(
baseUrl
,
req
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
var
res
=
new
(
Pipeline
)
err
=
json
.
Unmarshal
(
resBody
,
&
res
)
return
res
,
err
}
func
SearchPipelines
(
req
*
http
.
Request
)
([]
interface
{},
error
)
{
baseUrl
:=
JenkinsUrl
+
SearchPipelineUrl
+
req
.
URL
.
RawQuery
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
[]
interface
{}
err
:=
jenkinsClient
(
baseUrl
,
req
,
&
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
...
...
@@ -56,18 +64,40 @@ func GetPipeline(projectName, pipelineName string, req *http.Request) (*Pipeline
return
res
,
err
}
func
SearchPipelines
(
req
*
http
.
Request
)
([]
interface
{},
error
)
{
baseUrl
:=
JenkinsUrl
+
SearchPipelineUrl
+
req
.
URL
.
RawQuery
func
SearchPipelineRuns
(
projectName
,
pipelineName
string
,
req
*
http
.
Request
)
([]
interface
{},
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
SearchPipelineRunUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
[]
interface
{}
err
:=
jenkinsClient
(
baseUrl
,
req
,
&
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
res
,
err
}
func
GetPipelineRun
(
projectName
,
pipelineName
,
branchName
,
runId
string
,
req
*
http
.
Request
)
(
*
PipelineRun
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetPipelineRunUrl
,
projectName
,
pipelineName
,
branchName
,
runId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
=
new
(
PipelineRun
)
resBody
,
err
:=
jenkinsClient
(
baseUrl
,
req
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
res
,
err
}
func
GetPipelineRunNodes
(
projectName
,
pipelineName
,
branchName
,
runId
string
,
req
*
http
.
Request
)
([]
interface
{},
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetPipelineRunNodesUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
[]
interface
{}
err
=
json
.
Unmarshal
(
resBody
,
&
res
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
&
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
...
...
@@ -76,18 +106,38 @@ func SearchPipelines(req *http.Request) ([]interface{}, error) {
return
res
,
err
}
func
SearchPipelineRuns
(
projectName
,
pipelineName
string
,
req
*
http
.
Request
)
([]
interface
{},
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
SearchPipelineRunUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
)
func
GetStepLog
(
projectName
,
pipelineName
,
branchName
,
runId
,
stepId
,
nodeId
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetStepLogUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
,
stepId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
resBody
,
err
:=
Client
(
baseUrl
,
req
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
resBody
,
err
}
func
Validate
(
scmId
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
ValidateUrl
,
scmId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
resBody
,
err
:=
jenkins
Client
(
baseUrl
,
req
)
resBody
,
err
:=
Client
(
baseUrl
,
req
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
resBody
,
err
}
func
GetSCMOrg
(
scmId
string
,
req
*
http
.
Request
)
([]
interface
{},
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetSCMOrgUrl
+
req
.
URL
.
RawQuery
,
scmId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
[]
interface
{}
err
=
json
.
Unmarshal
(
resBody
,
&
res
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
&
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
...
...
@@ -96,18 +146,26 @@ func SearchPipelineRuns(projectName, pipelineName string, req *http.Request) ([]
return
res
,
err
}
func
Get
PipelineRun
(
projectName
,
pipelineName
,
branchName
,
runId
string
,
req
*
http
.
Request
)
(
*
Pipeline
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
Get
PipelineRunUrl
,
projectName
,
pipelineName
,
branchName
,
ru
nId
)
func
Get
OrgRepo
(
scmId
,
organizationId
string
,
req
*
http
.
Request
)
(
*
OrgRepo
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
Get
OrgRepoUrl
+
req
.
URL
.
RawQuery
,
scmId
,
organizatio
nId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
=
new
(
OrgRepo
)
resBody
,
err
:=
jenkinsClient
(
baseUrl
,
req
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
var
res
=
new
(
Pipeline
)
err
=
json
.
Unmarshal
(
resBody
,
&
res
)
return
res
,
err
}
func
StopPipeline
(
projectName
,
pipelineName
,
branchName
,
runId
string
,
req
*
http
.
Request
)
(
*
StopPipe
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
StopPipelineUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
=
new
(
StopPipe
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
...
...
@@ -116,18 +174,39 @@ func GetPipelineRun(projectName, pipelineName, branchName, runId string, req *ht
return
res
,
err
}
func
GetPipelineRunNodes
(
projectName
,
pipelineName
,
branchName
,
runId
string
,
req
*
http
.
Request
)
([]
interface
{}
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetPipelineRunNodes
Url
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
)
func
ReplayPipeline
(
projectName
,
pipelineName
,
branchName
,
runId
string
,
req
*
http
.
Request
)
(
*
ReplayPipe
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
ReplayPipeline
Url
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
=
new
(
ReplayPipe
)
resBody
,
err
:=
jenkinsClient
(
baseUrl
,
req
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
res
,
err
}
func
GetRunLog
(
projectName
,
pipelineName
,
branchName
,
runId
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetRunLogUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
resBody
,
err
:=
Client
(
baseUrl
,
req
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
resBody
,
err
}
func
GetArtifacts
(
projectName
,
pipelineName
,
branchName
,
runId
string
,
req
*
http
.
Request
)
([]
interface
{},
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetArtifactsUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
[]
interface
{}
err
=
json
.
Unmarshal
(
resBody
,
&
res
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
&
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
...
...
@@ -136,11 +215,25 @@ func GetPipelineRunNodes(projectName, pipelineName, branchName, runId string, re
return
res
,
err
}
func
GetStepLog
(
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
,
stepId
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetStepLogUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
,
stepId
)
func
GetPipeBranch
(
projectName
,
pipelineName
string
,
req
*
http
.
Request
)
([]
interface
{},
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetPipeBranchUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
[]
interface
{}
err
:=
jenkinsClient
(
baseUrl
,
req
,
&
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
res
,
err
}
func
CheckPipeline
(
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
,
stepId
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
CheckPipelineUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
,
stepId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
resBody
,
err
:=
jenkins
Client
(
baseUrl
,
req
)
resBody
,
err
:=
Client
(
baseUrl
,
req
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
...
...
@@ -149,11 +242,11 @@ func GetStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId str
return
resBody
,
err
}
func
Validate
(
scmId
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
ValidateUrl
,
scmId
)
func
GetConsoleLog
(
projectName
,
pipelineName
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetConsoleLogUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
resBody
,
err
:=
jenkins
Client
(
baseUrl
,
req
)
resBody
,
err
:=
Client
(
baseUrl
,
req
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
...
...
@@ -162,18 +255,39 @@ func Validate(scmId string, req *http.Request) ([]byte, error) {
return
resBody
,
err
}
func
GetOrgSCM
(
scmId
string
,
req
*
http
.
Request
)
([]
interface
{}
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetOrgSCMUrl
+
req
.
URL
.
RawQuery
,
scmId
)
func
ScanBranch
(
projectName
,
pipelineName
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
ScanBranchUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
resBody
,
err
:=
jenkins
Client
(
baseUrl
,
req
)
resBody
,
err
:=
Client
(
baseUrl
,
req
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
var
res
[]
interface
{}
err
=
json
.
Unmarshal
(
resBody
,
&
res
)
return
resBody
,
err
}
func
RunPipeline
(
projectName
,
pipelineName
,
branchName
string
,
req
*
http
.
Request
)
(
*
QueuedBlueRun
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
RunPipelineUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
=
new
(
QueuedBlueRun
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
res
,
err
}
func
GetStepsStatus
(
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
string
,
req
*
http
.
Request
)
(
*
NodeStatus
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetStepsStatusUrl
+
req
.
URL
.
RawQuery
,
projectName
,
pipelineName
,
branchName
,
runId
,
nodeId
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
=
new
(
NodeStatus
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
...
...
@@ -182,8 +296,39 @@ func GetOrgSCM(scmId string, req *http.Request) ([]interface{}, error) {
return
res
,
err
}
// create jenkins request
func
jenkinsClient
(
baseUrl
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
func
GetCrumb
(
req
*
http
.
Request
)
(
*
Crumb
,
error
)
{
baseUrl
:=
fmt
.
Sprintf
(
JenkinsUrl
+
GetCrumbUrl
)
log
.
Infof
(
"Jenkins-url: "
+
baseUrl
)
var
res
=
new
(
Crumb
)
err
:=
jenkinsClient
(
baseUrl
,
req
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
return
res
,
err
}
// jenkins request and parse response
func
jenkinsClient
(
baseUrl
string
,
req
*
http
.
Request
,
res
interface
{})
error
{
resBody
,
err
:=
Client
(
baseUrl
,
req
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
err
}
err
=
json
.
Unmarshal
(
resBody
,
res
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
err
}
return
nil
}
// create request
func
Client
(
baseUrl
string
,
req
*
http
.
Request
)
([]
byte
,
error
)
{
newReqUrl
,
err
:=
url
.
Parse
(
baseUrl
)
if
err
!=
nil
{
log
.
Error
(
err
)
...
...
@@ -210,11 +355,8 @@ func jenkinsClient(baseUrl string, req *http.Request) ([]byte, error) {
log
.
Info
(
string
(
resBody
))
if
resp
.
StatusCode
>=
http
.
StatusBadRequest
{
jkerr
:=
new
(
JkError
)
err
=
json
.
Unmarshal
(
resBody
,
jkerr
)
if
err
!=
nil
{
log
.
Error
(
err
)
return
nil
,
err
}
jkerr
.
Code
=
resp
.
StatusCode
jkerr
.
Message
=
http
.
StatusText
(
resp
.
StatusCode
)
return
nil
,
jkerr
}
...
...
pkg/models/devops/jkerror.go
浏览文件 @
1e87ad59
...
...
@@ -18,15 +18,8 @@
package
devops
type
JkError
struct
{
Message
string
`json:"message"`
Code
int
`json:"code"`
Errors
[]
Errors
`json:"errors"`
}
type
Errors
struct
{
Message
string
`json:"message"`
Code
string
`json:"code"`
Field
string
`json:"field"`
Code
int
`json:"code"`
}
func
(
err
*
JkError
)
Error
()
string
{
...
...
pkg/models/devops/json.go
浏览文件 @
1e87ad59
...
...
@@ -17,148 +17,715 @@
*/
package
devops
// GetPipeline & SearchPipelines
type
Pipeline
struct
{
Class
string
`json:"_class,omitempty"`
Links
Links
`json:"_links,omitempty"`
Actions
[]
interface
{}
`json:"actions,omitempty"`
DisplayName
string
`json:"displayName,omitempty"`
FullDisplayName
string
`json:"fullDisplayName,omitempty"`
FullName
string
`json:"fullName,omitempty"`
Name
interface
{}
`json:"name,omitempty"`
Organization
string
`json:"organization,omitempty"`
Parameters
interface
{}
`json:"parameters,omitempty"`
Permissions
Permissions
`json:"permissions,omitempty"`
EstimatedDurationInMillis
int
`json:"estimatedDurationInMillis,omitempty"`
NumberOfFolders
int
`json:"numberOfFolders,omitempty"`
NumberOfPipelines
int
`json:"numberOfPipelines,omitempty"`
PipelineFolderNames
[]
interface
{}
`json:"pipelineFolderNames,omitempty"`
WeatherScore
int
`json:"weatherScore,omitempty"`
BranchNames
[]
string
`json:"branchNames,omitempty"`
NumberOfFailingBranches
int
`json:"numberOfFailingBranches,omitempty"`
NumberOfFailingPullRequests
int
`json:"numberOfFailingPullRequests,omitempty"`
NumberOfSuccessfulBranches
int
`json:"numberOfSuccessfulBranches,omitempty"`
NumberOfSuccessfulPullRequests
int
`json:"numberOfSuccessfulPullRequests,omitempty"`
ScmSource
ScmSource
`json:"scmSource,omitempty"`
TotalNumberOfBranches
int
`json:"totalNumberOfBranches,omitempty"`
TotalNumberOfPullRequests
int
`json:"totalNumberOfPullRequests,omitempty"`
ArtifactsZipFile
interface
{}
`json:"artifactsZipFile,omitempty"`
CauseOfBlockage
interface
{}
`json:"causeOfBlockage,omitempty"`
Causes
[]
Causes
`json:"causes,omitempty"`
ChangeSet
[]
interface
{}
`json:"changeSet,omitempty"`
Description
interface
{}
`json:"description,omitempty"`
DurationInMillis
int
`json:"durationInMillis,omitempty"`
EnQueueTime
string
`json:"enQueueTime,omitempty"`
EndTime
string
`json:"endTime,omitempty"`
ID
string
`json:"id,omitempty"`
Pipeline
string
`json:"pipeline,omitempty"`
Replayable
bool
`json:"replayable,omitempty"`
Result
string
`json:"result,omitempty"`
RunSummary
string
`json:"runSummary,omitempty"`
StartTime
string
`json:"startTime,omitempty"`
State
string
`json:"state,omitempty"`
Type
string
`json:"type,omitempty"`
Branch
Branch
`json:"branch,omitempty"`
CommitID
string
`json:"commitId,omitempty"`
CommitURL
interface
{}
`json:"commitUrl,omitempty"`
PullRequest
interface
{}
`json:"pullRequest,omitempty"`
}
type
Self
struct
{
Class
string
`json:"_class,omitempty"`
Href
string
`json:"href,omitempty"`
}
type
Scm
struct
{
Class
string
`json:"_class,omitempty"`
Href
string
`json:"href,omitempty"`
}
type
Branches
struct
{
Class
string
`json:"_class,omitempty"`
Href
string
`json:"href,omitempty"`
}
type
Actions
struct
{
Class
string
`json:"_class,omitempty"`
Href
string
`json:"href,omitempty"`
}
type
Runs
struct
{
Class
string
`json:"_class,omitempty"`
Href
string
`json:"href,omitempty"`
}
type
Trends
struct
{
Class
string
`json:"_class,omitempty"`
Href
string
`json:"href,omitempty"`
}
type
Queue
struct
{
Class
string
`json:"_class,omitempty"`
Href
string
`json:"href,omitempty"`
Class
string
`json:"_class"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
Scm
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"scm"`
Branches
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"branches"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Runs
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"runs"`
Trends
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"trends"`
Queue
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"queue"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
Disabled
interface
{}
`json:"disabled"`
DisplayName
string
`json:"displayName"`
FullDisplayName
string
`json:"fullDisplayName"`
FullName
string
`json:"fullName"`
Name
string
`json:"name"`
Organization
string
`json:"organization"`
Parameters
interface
{}
`json:"parameters"`
Permissions
struct
{
Create
bool
`json:"create"`
Configure
bool
`json:"configure"`
Read
bool
`json:"read"`
Start
bool
`json:"start"`
Stop
bool
`json:"stop"`
}
`json:"permissions"`
EstimatedDurationInMillis
int
`json:"estimatedDurationInMillis"`
NumberOfFolders
int
`json:"numberOfFolders"`
NumberOfPipelines
int
`json:"numberOfPipelines"`
PipelineFolderNames
[]
interface
{}
`json:"pipelineFolderNames"`
WeatherScore
int
`json:"weatherScore"`
BranchNames
[]
string
`json:"branchNames"`
NumberOfFailingBranches
int
`json:"numberOfFailingBranches"`
NumberOfFailingPullRequests
int
`json:"numberOfFailingPullRequests"`
NumberOfSuccessfulBranches
int
`json:"numberOfSuccessfulBranches"`
NumberOfSuccessfulPullRequests
int
`json:"numberOfSuccessfulPullRequests"`
ScmSource
struct
{
Class
string
`json:"_class"`
APIURL
interface
{}
`json:"apiUrl"`
ID
string
`json:"id"`
}
`json:"scmSource"`
TotalNumberOfBranches
int
`json:"totalNumberOfBranches"`
TotalNumberOfPullRequests
int
`json:"totalNumberOfPullRequests"`
}
type
Links
struct
{
Self
Self
`json:"self,omitempty"`
Scm
Scm
`json:"scm,omitempty"`
Branches
Branches
`json:"branches,omitempty"`
Actions
Actions
`json:"actions,omitempty"`
Runs
Runs
`json:"runs,omitempty"`
Trends
Trends
`json:"trends,omitempty"`
Queue
Queue
`json:"queue,omitempty"`
PrevRun
PrevRun
`json:"prevRun"`
Parent
Parent
`json:"parent"`
Tests
Tests
`json:"tests"`
Nodes
Nodes
`json:"nodes"`
Log
Log
`json:"log"`
BlueTestSummary
BlueTestSummary
`json:"blueTestSummary"`
Steps
Steps
`json:"steps"`
Artifacts
Artifacts
`json:"artifacts"`
// GetPipelineRun & SearchPipelineRuns
type
PipelineRun
struct
{
Class
string
`json:"_class"`
Links
struct
{
PrevRun
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"prevRun"`
Parent
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"parent"`
Tests
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"tests"`
Nodes
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"nodes"`
Log
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"log"`
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
BlueTestSummary
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"blueTestSummary"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Steps
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"steps"`
Artifacts
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"artifacts"`
NextRun
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"nextRun"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
ArtifactsZipFile
interface
{}
`json:"artifactsZipFile"`
CauseOfBlockage
interface
{}
`json:"causeOfBlockage"`
Causes
[]
struct
{
Class
string
`json:"_class"`
ShortDescription
string
`json:"shortDescription"`
UserID
string
`json:"userId"`
UserName
string
`json:"userName"`
}
`json:"causes"`
ChangeSet
[]
interface
{}
`json:"changeSet"`
Description
interface
{}
`json:"description"`
DurationInMillis
int
`json:"durationInMillis"`
EnQueueTime
string
`json:"enQueueTime"`
EndTime
string
`json:"endTime"`
EstimatedDurationInMillis
int
`json:"estimatedDurationInMillis"`
ID
string
`json:"id"`
Name
interface
{}
`json:"name"`
Organization
string
`json:"organization"`
Pipeline
string
`json:"pipeline"`
Replayable
bool
`json:"replayable"`
Result
string
`json:"result"`
RunSummary
string
`json:"runSummary"`
StartTime
string
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
Branch
struct
{
IsPrimary
bool
`json:"isPrimary"`
Issues
[]
interface
{}
`json:"issues"`
URL
string
`json:"url"`
}
`json:"branch"`
CommitID
string
`json:"commitId"`
CommitURL
interface
{}
`json:"commitUrl"`
PullRequest
interface
{}
`json:"pullRequest"`
}
type
Permissions
struct
{
Create
bool
`json:"create,omitempty"`
Configure
bool
`json:"configure,omitempty"`
Read
bool
`json:"read,omitempty"`
Start
bool
`json:"start,omitempty"`
Stop
bool
`json:"stop,omitempty"`
// GetPipelineRunNodes
type
Nodes
[]
struct
{
Class
string
`json:"_class"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Steps
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"steps"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
DisplayDescription
interface
{}
`json:"displayDescription"`
DisplayName
string
`json:"displayName"`
DurationInMillis
int
`json:"durationInMillis"`
ID
string
`json:"id"`
Input
interface
{}
`json:"input"`
Result
string
`json:"result"`
StartTime
string
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
CauseOfBlockage
interface
{}
`json:"causeOfBlockage"`
Edges
[]
struct
{
Class
string
`json:"_class"`
ID
string
`json:"id"`
Type
string
`json:"type"`
}
`json:"edges"`
FirstParent
interface
{}
`json:"firstParent"`
Restartable
bool
`json:"restartable"`
Steps
[]
struct
{
Class
string
`json:"_class"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
}
`json:"_links"`
Actions
[]
struct
{
Class
string
`json:"_class"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
}
`json:"_links"`
URLName
string
`json:"urlName"`
}
`json:"actions"`
DisplayDescription
interface
{}
`json:"displayDescription"`
DisplayName
string
`json:"displayName"`
DurationInMillis
int
`json:"durationInMillis"`
ID
string
`json:"id"`
Input
interface
{}
`json:"input"`
Result
string
`json:"result"`
StartTime
string
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
}
`json:"steps"`
}
type
ScmSource
struct
{
Class
string
`json:"_class,omitempty"`
APIURL
interface
{}
`json:"apiUrl,omitempty"`
ID
string
`json:"i
d,omitempty"`
// Validate
type
Validates
struct
{
CredentialID
string
`json:"credentialI
d,omitempty"`
}
type
PrevRun
struct
{
// GetSCMOrg
type
SCMOrg
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
Links
struct
{
Repositories
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"repositories"`
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
}
`json:"_links"`
Avatar
string
`json:"avatar"`
JenkinsOrganizationPipeline
bool
`json:"jenkinsOrganizationPipeline"`
Name
string
`json:"name"`
}
type
Parent
struct
{
// GetOrgRepo
type
OrgRepo
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
}
`json:"_links"`
Repositories
struct
{
Class
string
`json:"_class"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
}
`json:"_links"`
Items
[]
struct
{
Class
string
`json:"_class"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
}
`json:"_links"`
DefaultBranch
string
`json:"defaultBranch"`
Description
string
`json:"description"`
Name
string
`json:"name"`
Permissions
struct
{
Admin
bool
`json:"admin"`
Push
bool
`json:"push"`
Pull
bool
`json:"pull"`
}
`json:"permissions"`
Private
bool
`json:"private"`
FullName
string
`json:"fullName"`
}
`json:"items"`
LastPage
interface
{}
`json:"lastPage"`
NextPage
interface
{}
`json:"nextPage"`
PageSize
int
`json:"pageSize"`
}
`json:"repositories"`
}
type
Tests
struct
{
// StopPipeline
type
StopPipe
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
Links
struct
{
Parent
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"parent"`
Tests
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"tests"`
Nodes
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"nodes"`
Log
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"log"`
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
BlueTestSummary
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"blueTestSummary"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Steps
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"steps"`
Artifacts
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"artifacts"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
ArtifactsZipFile
interface
{}
`json:"artifactsZipFile"`
CauseOfBlockage
interface
{}
`json:"causeOfBlockage"`
Causes
[]
struct
{
Class
string
`json:"_class"`
ShortDescription
string
`json:"shortDescription"`
}
`json:"causes"`
ChangeSet
[]
interface
{}
`json:"changeSet"`
Description
interface
{}
`json:"description"`
DurationInMillis
int
`json:"durationInMillis"`
EnQueueTime
string
`json:"enQueueTime"`
EndTime
string
`json:"endTime"`
EstimatedDurationInMillis
int
`json:"estimatedDurationInMillis"`
ID
string
`json:"id"`
Name
interface
{}
`json:"name"`
Organization
string
`json:"organization"`
Pipeline
string
`json:"pipeline"`
Replayable
bool
`json:"replayable"`
Result
string
`json:"result"`
RunSummary
string
`json:"runSummary"`
StartTime
string
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
Branch
struct
{
IsPrimary
bool
`json:"isPrimary"`
Issues
[]
interface
{}
`json:"issues"`
URL
string
`json:"url"`
}
`json:"branch"`
CommitID
string
`json:"commitId"`
CommitURL
interface
{}
`json:"commitUrl"`
PullRequest
interface
{}
`json:"pullRequest"`
}
type
Nodes
struct
{
// ReplayPipeline
type
ReplayPipe
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
Links
struct
{
Parent
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"parent"`
Tests
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"tests"`
Log
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"log"`
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
BlueTestSummary
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"blueTestSummary"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Artifacts
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"artifacts"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
ArtifactsZipFile
interface
{}
`json:"artifactsZipFile"`
CauseOfBlockage
string
`json:"causeOfBlockage"`
Causes
[]
struct
{
Class
string
`json:"_class"`
ShortDescription
string
`json:"shortDescription"`
UserID
string
`json:"userId,omitempty"`
UserName
string
`json:"userName,omitempty"`
}
`json:"causes"`
ChangeSet
[]
interface
{}
`json:"changeSet"`
Description
interface
{}
`json:"description"`
DurationInMillis
interface
{}
`json:"durationInMillis"`
EnQueueTime
interface
{}
`json:"enQueueTime"`
EndTime
interface
{}
`json:"endTime"`
EstimatedDurationInMillis
interface
{}
`json:"estimatedDurationInMillis"`
ID
string
`json:"id"`
Name
interface
{}
`json:"name"`
Organization
string
`json:"organization"`
Pipeline
string
`json:"pipeline"`
Replayable
bool
`json:"replayable"`
Result
string
`json:"result"`
RunSummary
interface
{}
`json:"runSummary"`
StartTime
interface
{}
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
QueueID
string
`json:"queueId"`
}
type
Log
struct
{
// GetArtifacts
type
Artifacts
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
}
`json:"_links"`
Downloadable
bool
`json:"downloadable"`
ID
string
`json:"id"`
Name
string
`json:"name"`
Path
string
`json:"path"`
Size
int
`json:"size"`
URL
string
`json:"url"`
// The url for Download artifacts
}
type
BlueTestSummary
struct
{
// GetPipeBranch
type
PipeBranch
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
Scm
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"scm"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Runs
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"runs"`
Trends
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"trends"`
Queue
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"queue"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
Disabled
bool
`json:"disabled"`
DisplayName
string
`json:"displayName"`
EstimatedDurationInMillis
int
`json:"estimatedDurationInMillis"`
FullDisplayName
string
`json:"fullDisplayName"`
FullName
string
`json:"fullName"`
LatestRun
struct
{
Class
string
`json:"_class"`
Links
struct
{
PrevRun
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"prevRun"`
Parent
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"parent"`
Tests
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"tests"`
Log
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"log"`
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
BlueTestSummary
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"blueTestSummary"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Artifacts
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"artifacts"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
ArtifactsZipFile
string
`json:"artifactsZipFile"`
CauseOfBlockage
interface
{}
`json:"causeOfBlockage"`
Causes
[]
struct
{
Class
string
`json:"_class"`
ShortDescription
string
`json:"shortDescription"`
}
`json:"causes"`
ChangeSet
[]
interface
{}
`json:"changeSet"`
Description
interface
{}
`json:"description"`
DurationInMillis
int
`json:"durationInMillis"`
EnQueueTime
string
`json:"enQueueTime"`
EndTime
string
`json:"endTime"`
EstimatedDurationInMillis
int
`json:"estimatedDurationInMillis"`
ID
string
`json:"id"`
Name
interface
{}
`json:"name"`
Organization
string
`json:"organization"`
Pipeline
string
`json:"pipeline"`
Replayable
bool
`json:"replayable"`
Result
string
`json:"result"`
RunSummary
string
`json:"runSummary"`
StartTime
string
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
}
`json:"latestRun"`
Name
string
`json:"name"`
Organization
string
`json:"organization"`
Parameters
[]
struct
{
Class
string
`json:"_class"`
DefaultParameterValue
struct
{
Class
string
`json:"_class"`
Name
string
`json:"name"`
Value
string
`json:"value"`
}
`json:"defaultParameterValue"`
Description
string
`json:"description"`
Name
string
`json:"name"`
Type
string
`json:"type"`
}
`json:"parameters"`
Permissions
struct
{
Create
bool
`json:"create"`
Configure
bool
`json:"configure"`
Read
bool
`json:"read"`
Start
bool
`json:"start"`
Stop
bool
`json:"stop"`
}
`json:"permissions"`
WeatherScore
int
`json:"weatherScore"`
Branch
struct
{
IsPrimary
bool
`json:"isPrimary"`
Issues
[]
interface
{}
`json:"issues"`
URL
string
`json:"url"`
}
`json:"branch"`
}
type
Steps
struct
{
// RunPipeline
type
RunPayload
struct
{
Parameters
[]
struct
{
Name
string
`json:"name"`
Value
string
`json:"value"`
}
`json:"parameters"`
}
type
QueuedBlueRun
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
Links
struct
{
Parent
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"parent"`
Tests
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"tests"`
Log
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"log"`
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
BlueTestSummary
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"blueTestSummary"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Artifacts
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"artifacts"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
ArtifactsZipFile
interface
{}
`json:"artifactsZipFile"`
CauseOfBlockage
string
`json:"causeOfBlockage"`
Causes
[]
struct
{
Class
string
`json:"_class"`
ShortDescription
string
`json:"shortDescription"`
UserID
string
`json:"userId"`
UserName
string
`json:"userName"`
}
`json:"causes"`
ChangeSet
[]
interface
{}
`json:"changeSet"`
Description
interface
{}
`json:"description"`
DurationInMillis
interface
{}
`json:"durationInMillis"`
EnQueueTime
interface
{}
`json:"enQueueTime"`
EndTime
interface
{}
`json:"endTime"`
EstimatedDurationInMillis
interface
{}
`json:"estimatedDurationInMillis"`
ID
string
`json:"id"`
Name
interface
{}
`json:"name"`
Organization
string
`json:"organization"`
Pipeline
string
`json:"pipeline"`
Replayable
bool
`json:"replayable"`
Result
string
`json:"result"`
RunSummary
interface
{}
`json:"runSummary"`
StartTime
interface
{}
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
QueueID
string
`json:"queueId"`
}
type
Artifacts
struct
{
// GetNodeStatus
type
NodeStatus
[]
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
Steps
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"steps"`
}
`json:"_links"`
Actions
[]
interface
{}
`json:"actions"`
DisplayDescription
interface
{}
`json:"displayDescription"`
DisplayName
string
`json:"displayName"`
DurationInMillis
int
`json:"durationInMillis"`
ID
string
`json:"id"`
Input
interface
{}
`json:"input"`
Result
string
`json:"result"`
StartTime
string
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
CauseOfBlockage
interface
{}
`json:"causeOfBlockage"`
Edges
[]
struct
{
Class
string
`json:"_class"`
ID
string
`json:"id"`
Type
string
`json:"type"`
}
`json:"edges"`
FirstParent
interface
{}
`json:"firstParent"`
Restartable
bool
`json:"restartable"`
Steps
[]
struct
{
Class
string
`json:"_class"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
Actions
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"actions"`
}
`json:"_links"`
Actions
[]
struct
{
Class
string
`json:"_class"`
Links
struct
{
Self
struct
{
Class
string
`json:"_class"`
Href
string
`json:"href"`
}
`json:"self"`
}
`json:"_links"`
URLName
string
`json:"urlName"`
}
`json:"actions"`
DisplayDescription
interface
{}
`json:"displayDescription"`
DisplayName
string
`json:"displayName"`
DurationInMillis
int
`json:"durationInMillis"`
ID
string
`json:"id"`
Input
interface
{}
`json:"input"`
Result
string
`json:"result"`
StartTime
string
`json:"startTime"`
State
string
`json:"state"`
Type
string
`json:"type"`
}
`json:"steps"`
}
type
Causes
struct
{
Class
string
`json:"_class"`
ShortDescription
string
`json:"shortDescription"`
UserID
string
`json:"userId,omitempty"`
UserName
string
`json:"userName,omitempty"`
// CheckPipeline
type
CheckPlayload
struct
{
ID
string
`json:"id"`
Parameters
[]
struct
{
Name
string
`json:"name"`
Value
string
`json:"value"`
}
`json:"parameters"`
}
type
Branch
struct
{
IsPrimary
bool
`json:"isPrimary"`
Issues
[]
interface
{}
`json:"issues"`
URL
string
`json:"url"`
// Getcrumb
type
Crumb
struct
{
Class
string
`json:"_class"`
Crumb
string
`json:"crumb"`
CrumbRequestField
string
`json:"crumbRequestField"`
}
pkg/models/devops/urlconfig.go
浏览文件 @
1e87ad59
...
...
@@ -26,5 +26,17 @@ const (
GetPipelineRunNodesUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/?"
GetStepLogUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/%s/log/?"
ValidateUrl
=
"/blue/rest/organizations/jenkins/scm/%s/validate"
GetOrgSCMUrl
=
"/blue/rest/organizations/jenkins/scm/%s/organizations/?"
GetSCMOrgUrl
=
"/blue/rest/organizations/jenkins/scm/%s/organizations/?"
GetOrgRepoUrl
=
"/blue/rest/organizations/jenkins/scm/%s/organizations/%s/repositories/?"
StopPipelineUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/stop/?"
ReplayPipelineUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/replay/"
GetRunLogUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/log/?"
GetArtifactsUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/artifacts/?"
GetPipeBranchUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/?"
GetConsoleLogUrl
=
"/job/%s/job/%s/indexing/consoleText"
ScanBranchUrl
=
"/job/%s/job/%s/build?"
RunPipelineUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/"
GetStepsStatusUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/?"
CheckPipelineUrl
=
"/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/%s/"
GetCrumbUrl
=
"/crumbIssuer/api/json/"
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录