Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jenkinsci
sub-group
Jenkins Cli
提交
d182f90a
J
Jenkins Cli
项目概览
jenkinsci
/
sub-group
/
Jenkins Cli
通知
0
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
Jenkins Cli
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
d182f90a
编写于
11月 02, 2019
作者:
LinuxSuRen
提交者:
GitHub
11月 02, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add support to load a jenkinsfile from url (#220)
* Add support to load a jenkinsfile from url * Add more test cases
上级
301b0a66
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
61 addition
and
6 deletion
+61
-6
app/cmd/job_edit.go
app/cmd/job_edit.go
+23
-0
app/cmd/job_edit_test.go
app/cmd/job_edit_test.go
+38
-6
未找到文件。
app/cmd/job_edit.go
浏览文件 @
d182f90a
...
...
@@ -13,6 +13,7 @@ import (
type
JobEditOption
struct
{
Filename
string
Script
string
URL
string
RoundTripper
http
.
RoundTripper
}
...
...
@@ -21,6 +22,8 @@ var jobEditOption JobEditOption
func
init
()
{
jobCmd
.
AddCommand
(
jobEditCmd
)
jobEditCmd
.
Flags
()
.
StringVarP
(
&
jobEditOption
.
URL
,
"url"
,
""
,
""
,
"URL of the Jenkinsfile to files to use to replace pipeline"
)
jobEditCmd
.
Flags
()
.
StringVarP
(
&
jobEditOption
.
Filename
,
"filename"
,
"f"
,
""
,
"Filename to files to use to replace pipeline"
)
jobEditCmd
.
Flags
()
.
StringVarP
(
&
jobEditOption
.
Script
,
"script"
,
"s"
,
""
,
...
...
@@ -67,6 +70,10 @@ func (j *JobEditOption) getPipeline(jClient *client.JobClient, name string) (scr
return
}
if
script
,
err
=
j
.
getPipelineFromURL
(
jClient
);
script
!=
""
||
err
!=
nil
{
return
}
var
job
*
client
.
Pipeline
if
job
,
err
=
jClient
.
GetPipeline
(
name
);
err
==
nil
{
content
:=
""
...
...
@@ -102,3 +109,19 @@ func (j *JobEditOption) getPipelineFromFile() (script string, err error) {
}
return
}
func
(
j
*
JobEditOption
)
getPipelineFromURL
(
jClient
*
client
.
JobClient
)
(
script
string
,
err
error
)
{
if
j
.
URL
==
""
{
return
}
var
resp
*
http
.
Response
var
body
[]
byte
httpClient
:=
jClient
.
JenkinsCore
.
GetClient
()
if
resp
,
err
=
httpClient
.
Get
(
j
.
URL
);
err
==
nil
{
if
body
,
err
=
ioutil
.
ReadAll
(
resp
.
Body
);
err
==
nil
{
script
=
string
(
body
)
}
}
return
}
app/cmd/job_edit_test.go
浏览文件 @
d182f90a
...
...
@@ -3,6 +3,7 @@ package cmd
import
(
"bytes"
"io/ioutil"
"net/http"
"os"
"github.com/golang/mock/gomock"
...
...
@@ -10,8 +11,6 @@ import (
"github.com/jenkins-zh/jenkins-cli/mock/mhttp"
.
"github.com/onsi/ginkgo"
.
"github.com/onsi/gomega"
// "github.com/AlecAivazis/survey/v2/core"
// "github.com/AlecAivazis/survey/v2/terminal"
)
var
_
=
Describe
(
"job edit command"
,
func
()
{
...
...
@@ -21,6 +20,8 @@ var _ = Describe("job edit command", func() {
jenkinsRoot
string
username
string
token
string
script
string
)
BeforeEach
(
func
()
{
...
...
@@ -34,6 +35,8 @@ var _ = Describe("job edit command", func() {
jenkinsRoot
=
"http://localhost:8080/jenkins"
username
=
"admin"
token
=
"111e3a2f0231198855dceaff96f20540a9"
script
=
"sample"
})
AfterEach
(
func
()
{
...
...
@@ -51,9 +54,9 @@ var _ = Describe("job edit command", func() {
Expect
(
err
)
.
To
(
BeNil
())
jobName
:=
"test"
client
.
PrepareForUpdatePipelineJob
(
roundTripper
,
jenkinsRoot
,
"sample"
,
username
,
token
)
client
.
PrepareForUpdatePipelineJob
(
roundTripper
,
jenkinsRoot
,
script
,
username
,
token
)
rootCmd
.
SetArgs
([]
string
{
"job"
,
"edit"
,
jobName
,
"--script"
,
"sample"
})
rootCmd
.
SetArgs
([]
string
{
"job"
,
"edit"
,
jobName
,
"--script"
,
script
})
buf
:=
new
(
bytes
.
Buffer
)
rootCmd
.
SetOutput
(
buf
)
...
...
@@ -72,10 +75,10 @@ var _ = Describe("job edit command", func() {
tempFile
,
err
:=
ioutil
.
TempFile
(
""
,
"example"
)
Expect
(
err
)
.
To
(
BeNil
())
defer
os
.
Remove
(
tempFile
.
Name
())
err
=
ioutil
.
WriteFile
(
tempFile
.
Name
(),
[]
byte
(
"sample"
),
0644
)
err
=
ioutil
.
WriteFile
(
tempFile
.
Name
(),
[]
byte
(
script
),
0644
)
jobName
:=
"test"
client
.
PrepareForUpdatePipelineJob
(
roundTripper
,
jenkinsRoot
,
"sample"
,
username
,
token
)
client
.
PrepareForUpdatePipelineJob
(
roundTripper
,
jenkinsRoot
,
script
,
username
,
token
)
rootCmd
.
SetArgs
([]
string
{
"job"
,
"edit"
,
jobName
,
"--filename"
,
tempFile
.
Name
(),
"--script"
,
""
})
...
...
@@ -86,5 +89,34 @@ var _ = Describe("job edit command", func() {
Expect
(
buf
.
String
())
.
To
(
Equal
(
""
))
})
It
(
"edit with url param"
,
func
()
{
data
,
err
:=
generateSampleConfig
()
Expect
(
err
)
.
To
(
BeNil
())
err
=
ioutil
.
WriteFile
(
rootOptions
.
ConfigFile
,
data
,
0664
)
Expect
(
err
)
.
To
(
BeNil
())
jobName
:=
"test"
client
.
PrepareForUpdatePipelineJob
(
roundTripper
,
jenkinsRoot
,
"sample"
,
username
,
token
)
remoteJenkinsfileURL
:=
"http://test"
remoteJenkinsfileReq
,
_
:=
http
.
NewRequest
(
"GET"
,
remoteJenkinsfileURL
,
nil
)
remoteJenkinsfileResponse
:=
&
http
.
Response
{
StatusCode
:
200
,
Request
:
remoteJenkinsfileReq
,
Body
:
ioutil
.
NopCloser
(
bytes
.
NewBufferString
(
script
)),
}
roundTripper
.
EXPECT
()
.
RoundTrip
(
remoteJenkinsfileReq
)
.
Return
(
remoteJenkinsfileResponse
,
nil
)
rootCmd
.
SetArgs
([]
string
{
"job"
,
"edit"
,
jobName
,
"--filename"
,
""
,
"--script"
,
""
,
"--url"
,
remoteJenkinsfileURL
})
buf
:=
new
(
bytes
.
Buffer
)
rootCmd
.
SetOutput
(
buf
)
_
,
err
=
rootCmd
.
ExecuteC
()
Expect
(
err
)
.
To
(
BeNil
())
Expect
(
buf
.
String
())
.
To
(
Equal
(
""
))
})
})
})
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录