Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
水淹萌龙
kubesphere
提交
ce0f4179
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看板
未验证
提交
ce0f4179
编写于
12月 15, 2020
作者:
K
KubeSphere CI Bot
提交者:
GitHub
12月 15, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #3149 from LinuxSuRen/import-pipeline-list
Mix up the pipeline list between ks and Jenkins
上级
6da7ab03
e2fee2cd
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
82 addition
and
6 deletion
+82
-6
pkg/kapis/devops/v1alpha2/devops.go
pkg/kapis/devops/v1alpha2/devops.go
+69
-2
pkg/kapis/devops/v1alpha3/handler.go
pkg/kapis/devops/v1alpha3/handler.go
+1
-1
pkg/models/devops/devops.go
pkg/models/devops/devops.go
+11
-2
pkg/simple/client/devops/pipeline.go
pkg/simple/client/devops/pipeline.go
+1
-1
未找到文件。
pkg/kapis/devops/v1alpha2/devops.go
浏览文件 @
ce0f4179
...
@@ -24,12 +24,14 @@ import (
...
@@ -24,12 +24,14 @@ import (
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/apiserver/pkg/authentication/user"
log
"k8s.io/klog"
log
"k8s.io/klog"
"kubesphere.io/kubesphere/pkg/api"
"kubesphere.io/kubesphere/pkg/api"
"kubesphere.io/kubesphere/pkg/apis/devops/v1alpha3"
iamv1alpha2
"kubesphere.io/kubesphere/pkg/apis/iam/v1alpha2"
iamv1alpha2
"kubesphere.io/kubesphere/pkg/apis/iam/v1alpha2"
"kubesphere.io/kubesphere/pkg/apiserver/request"
"kubesphere.io/kubesphere/pkg/apiserver/request"
"kubesphere.io/kubesphere/pkg/constants"
"kubesphere.io/kubesphere/pkg/constants"
"kubesphere.io/kubesphere/pkg/models/devops"
"kubesphere.io/kubesphere/pkg/models/devops"
clientDevOps
"kubesphere.io/kubesphere/pkg/simple/client/devops"
clientDevOps
"kubesphere.io/kubesphere/pkg/simple/client/devops"
"net/http"
"net/http"
"strconv"
"strings"
"strings"
)
)
...
@@ -49,15 +51,80 @@ func (h *ProjectPipelineHandler) GetPipeline(req *restful.Request, resp *restful
...
@@ -49,15 +51,80 @@ func (h *ProjectPipelineHandler) GetPipeline(req *restful.Request, resp *restful
resp
.
WriteAsJson
(
res
)
resp
.
WriteAsJson
(
res
)
}
}
func
(
h
*
ProjectPipelineHandler
)
getPipelinesByRequest
(
req
*
restful
.
Request
)
(
api
.
ListResult
,
error
)
{
// this is a very trick way, but don't have a better solution for now
var
(
err
error
start
int
limit
int
namespace
string
)
// parse query from the request
query
:=
req
.
QueryParameter
(
"q"
)
for
_
,
val
:=
range
strings
.
Split
(
query
,
";"
)
{
if
strings
.
HasPrefix
(
val
,
"pipeline:"
)
{
namespace
=
strings
.
TrimLeft
(
val
,
"pipeline:"
)
namespace
=
strings
.
Split
(
namespace
,
"/"
)[
0
]
}
}
// make sure we have an appropriate value
if
start
,
err
=
strconv
.
Atoi
(
req
.
QueryParameter
(
"start"
));
err
!=
nil
{
start
=
0
}
if
limit
,
err
=
strconv
.
Atoi
(
req
.
QueryParameter
(
"limit"
));
err
!=
nil
{
limit
=
10
}
defer
req
.
Request
.
Form
.
Set
(
"limit"
,
"10000"
)
// assume the pipelines no more than 10k
return
h
.
devopsOperator
.
ListPipelineObj
(
namespace
,
func
(
list
[]
*
v1alpha3
.
Pipeline
,
i
int
,
j
int
)
bool
{
return
strings
.
Compare
(
strings
.
ToUpper
(
list
[
i
]
.
Name
),
strings
.
ToUpper
(
list
[
j
]
.
Name
))
<
0
},
limit
,
start
)
}
func
(
h
*
ProjectPipelineHandler
)
ListPipelines
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
func
(
h
*
ProjectPipelineHandler
)
ListPipelines
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
res
,
err
:=
h
.
devopsOperator
.
ListPipelines
(
req
.
Request
)
objs
,
err
:=
h
.
getPipelinesByRequest
(
req
)
if
err
!=
nil
{
if
err
!=
nil
{
parseErr
(
err
,
resp
)
parseErr
(
err
,
resp
)
return
return
}
}
// get all pipelines which come from ks
pipelineList
:=
&
clientDevOps
.
PipelineList
{
Total
:
objs
.
TotalItems
,
Items
:
make
([]
clientDevOps
.
Pipeline
,
objs
.
TotalItems
),
}
pipelineMap
:=
make
(
map
[
string
]
int
,
objs
.
TotalItems
)
for
i
,
item
:=
range
objs
.
Items
{
if
pipeline
,
ok
:=
item
.
(
v1alpha3
.
Pipeline
);
!
ok
{
continue
}
else
{
pip
:=
clientDevOps
.
Pipeline
{
Name
:
pipeline
.
Name
,
}
pipelineMap
[
pipeline
.
Name
]
=
i
pipelineList
.
Items
[
i
]
=
pip
}
}
// get all pipelines which come from Jenkins
// fill out the rest fields
res
,
err
:=
h
.
devopsOperator
.
ListPipelines
(
req
.
Request
)
if
err
!=
nil
{
log
.
Error
(
err
)
}
else
{
for
_
,
item
:=
range
res
.
Items
{
if
index
,
ok
:=
pipelineMap
[
item
.
Name
];
ok
{
pipelineList
.
Items
[
index
]
=
item
}
}
}
resp
.
Header
()
.
Set
(
restful
.
HEADER_ContentType
,
restful
.
MIME_JSON
)
resp
.
Header
()
.
Set
(
restful
.
HEADER_ContentType
,
restful
.
MIME_JSON
)
resp
.
WriteAsJson
(
res
)
resp
.
WriteAsJson
(
pipelineList
)
}
}
func
(
h
*
ProjectPipelineHandler
)
GetPipelineRun
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
func
(
h
*
ProjectPipelineHandler
)
GetPipelineRun
(
req
*
restful
.
Request
,
resp
*
restful
.
Response
)
{
...
...
pkg/kapis/devops/v1alpha3/handler.go
浏览文件 @
ce0f4179
...
@@ -184,7 +184,7 @@ func (h *devopsHandler) ListPipeline(request *restful.Request, response *restful
...
@@ -184,7 +184,7 @@ func (h *devopsHandler) ListPipeline(request *restful.Request, response *restful
devops
:=
request
.
PathParameter
(
"devops"
)
devops
:=
request
.
PathParameter
(
"devops"
)
limit
,
offset
:=
params
.
ParsePaging
(
request
)
limit
,
offset
:=
params
.
ParsePaging
(
request
)
objs
,
err
:=
h
.
devops
.
ListPipelineObj
(
devops
,
limit
,
offset
)
objs
,
err
:=
h
.
devops
.
ListPipelineObj
(
devops
,
nil
,
limit
,
offset
)
if
err
!=
nil
{
if
err
!=
nil
{
klog
.
Error
(
err
)
klog
.
Error
(
err
)
if
errors
.
IsNotFound
(
err
)
{
if
errors
.
IsNotFound
(
err
)
{
...
...
pkg/models/devops/devops.go
浏览文件 @
ce0f4179
...
@@ -41,6 +41,7 @@ import (
...
@@ -41,6 +41,7 @@ import (
resourcesV1alpha3
"kubesphere.io/kubesphere/pkg/models/resources/v1alpha3"
resourcesV1alpha3
"kubesphere.io/kubesphere/pkg/models/resources/v1alpha3"
"kubesphere.io/kubesphere/pkg/simple/client/devops"
"kubesphere.io/kubesphere/pkg/simple/client/devops"
"net/http"
"net/http"
"sort"
"sync"
"sync"
)
)
...
@@ -59,7 +60,7 @@ type DevopsOperator interface {
...
@@ -59,7 +60,7 @@ type DevopsOperator interface {
GetPipelineObj
(
projectName
string
,
pipelineName
string
)
(
*
v1alpha3
.
Pipeline
,
error
)
GetPipelineObj
(
projectName
string
,
pipelineName
string
)
(
*
v1alpha3
.
Pipeline
,
error
)
DeletePipelineObj
(
projectName
string
,
pipelineName
string
)
error
DeletePipelineObj
(
projectName
string
,
pipelineName
string
)
error
UpdatePipelineObj
(
projectName
string
,
pipeline
*
v1alpha3
.
Pipeline
)
(
*
v1alpha3
.
Pipeline
,
error
)
UpdatePipelineObj
(
projectName
string
,
pipeline
*
v1alpha3
.
Pipeline
)
(
*
v1alpha3
.
Pipeline
,
error
)
ListPipelineObj
(
projectName
string
,
limit
,
offset
int
)
(
api
.
ListResult
,
error
)
ListPipelineObj
(
projectName
string
,
sortFunc
func
([]
*
v1alpha3
.
Pipeline
,
int
,
int
)
bool
,
limit
,
offset
int
)
(
api
.
ListResult
,
error
)
CreateCredentialObj
(
projectName
string
,
s
*
v1
.
Secret
)
(
*
v1
.
Secret
,
error
)
CreateCredentialObj
(
projectName
string
,
s
*
v1
.
Secret
)
(
*
v1
.
Secret
,
error
)
GetCredentialObj
(
projectName
string
,
secretName
string
)
(
*
v1
.
Secret
,
error
)
GetCredentialObj
(
projectName
string
,
secretName
string
)
(
*
v1
.
Secret
,
error
)
...
@@ -254,7 +255,7 @@ func (d devopsOperator) UpdatePipelineObj(projectName string, pipeline *v1alpha3
...
@@ -254,7 +255,7 @@ func (d devopsOperator) UpdatePipelineObj(projectName string, pipeline *v1alpha3
return
d
.
ksclient
.
DevopsV1alpha3
()
.
Pipelines
(
projectObj
.
Status
.
AdminNamespace
)
.
Update
(
pipeline
)
return
d
.
ksclient
.
DevopsV1alpha3
()
.
Pipelines
(
projectObj
.
Status
.
AdminNamespace
)
.
Update
(
pipeline
)
}
}
func
(
d
devopsOperator
)
ListPipelineObj
(
projectName
string
,
limit
,
offset
int
)
(
api
.
ListResult
,
error
)
{
func
(
d
devopsOperator
)
ListPipelineObj
(
projectName
string
,
sortFunc
func
([]
*
v1alpha3
.
Pipeline
,
int
,
int
)
bool
,
limit
,
offset
int
)
(
api
.
ListResult
,
error
)
{
projectObj
,
err
:=
d
.
ksInformers
.
Devops
()
.
V1alpha3
()
.
DevOpsProjects
()
.
Lister
()
.
Get
(
projectName
)
projectObj
,
err
:=
d
.
ksInformers
.
Devops
()
.
V1alpha3
()
.
DevOpsProjects
()
.
Lister
()
.
Get
(
projectName
)
if
err
!=
nil
{
if
err
!=
nil
{
return
api
.
ListResult
{},
err
return
api
.
ListResult
{},
err
...
@@ -263,6 +264,14 @@ func (d devopsOperator) ListPipelineObj(projectName string, limit, offset int) (
...
@@ -263,6 +264,14 @@ func (d devopsOperator) ListPipelineObj(projectName string, limit, offset int) (
if
err
!=
nil
{
if
err
!=
nil
{
return
api
.
ListResult
{},
err
return
api
.
ListResult
{},
err
}
}
// sort the pipeline list according to the request
if
sortFunc
!=
nil
{
sort
.
SliceStable
(
data
,
func
(
i
,
j
int
)
bool
{
return
sortFunc
(
data
,
i
,
j
)
})
}
items
:=
make
([]
interface
{},
0
)
items
:=
make
([]
interface
{},
0
)
var
result
[]
interface
{}
var
result
[]
interface
{}
for
_
,
item
:=
range
data
{
for
_
,
item
:=
range
data
{
...
...
pkg/simple/client/devops/pipeline.go
浏览文件 @
ce0f4179
...
@@ -81,7 +81,7 @@ type Pipeline struct {
...
@@ -81,7 +81,7 @@ type Pipeline struct {
NumberOfFolders
int
`json:"numberOfFolders,omitempty" description:"number of folders"`
NumberOfFolders
int
`json:"numberOfFolders,omitempty" description:"number of folders"`
NumberOfPipelines
int
`json:"numberOfPipelines,omitempty" description:"number of pipelines"`
NumberOfPipelines
int
`json:"numberOfPipelines,omitempty" description:"number of pipelines"`
PipelineFolderNames
[]
interface
{}
`json:"pipelineFolderNames,omitempty" description:"pipeline folder names"`
PipelineFolderNames
[]
interface
{}
`json:"pipelineFolderNames,omitempty" description:"pipeline folder names"`
WeatherScore
int
`json:"weatherScore
,omitempty
" description:"the score to description the result of pipeline activity"`
WeatherScore
int
`json:"weatherScore" description:"the score to description the result of pipeline activity"`
BranchNames
[]
string
`json:"branchNames,omitempty" description:"branch names"`
BranchNames
[]
string
`json:"branchNames,omitempty" description:"branch names"`
NumberOfFailingBranches
int
`json:"numberOfFailingBranches,omitempty" description:"number of failing branches"`
NumberOfFailingBranches
int
`json:"numberOfFailingBranches,omitempty" description:"number of failing branches"`
NumberOfFailingPullRequests
int
`json:"numberOfFailingPullRequests,omitempty" description:"number of failing pull requests"`
NumberOfFailingPullRequests
int
`json:"numberOfFailingPullRequests,omitempty" description:"number of failing pull requests"`
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录