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
此差异已折叠。
点击以展开。
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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录