Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FIY695
jenkins
提交
6b2af915
J
jenkins
项目概览
FIY695
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6b2af915
编写于
8月 09, 2011
作者:
K
Kohsuke Kawaguchi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[FIXED JENKINS-8797] added CLI commands to manipulate jobs by their XML
definitions.
上级
64a6428d
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
135 addition
and
28 deletion
+135
-28
changelog.html
changelog.html
+3
-0
core/src/main/java/hudson/cli/GetJobXmlCommand.java
core/src/main/java/hudson/cli/GetJobXmlCommand.java
+50
-0
core/src/main/java/hudson/cli/UpdateJobXmlCommand.java
core/src/main/java/hudson/cli/UpdateJobXmlCommand.java
+49
-0
core/src/main/java/hudson/model/AbstractItem.java
core/src/main/java/hudson/model/AbstractItem.java
+33
-28
未找到文件。
changelog.html
浏览文件 @
6b2af915
...
...
@@ -86,6 +86,9 @@ Upcoming changes</a>
<li
class=
rfe
>
If CLI fails to connect via a JNLP Slave port, fall back to HTTP full-duplex.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-10611"
>
issue 10611
</a>
)
<li
class=
rfe
>
Added two CLI commands to manipulate job by its XML definition.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-8797"
>
issue 8797
</a>
)
<li
class=
rfe
>
Fixed unclear text for Tabs with no jobs
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-9330"
>
issue 9330
</a>
)
...
...
core/src/main/java/hudson/cli/GetJobXmlCommand.java
0 → 100644
浏览文件 @
6b2af915
/*
* The MIT License
*
* Copyright (c) 2011, CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package
hudson.cli
;
import
hudson.model.AbstractProject
;
import
hudson.model.Item
;
import
hudson.util.IOUtils
;
import
org.kohsuke.args4j.Argument
;
/**
* @author Kohsuke Kawaguchi
*/
public
class
GetJobXmlCommand
extends
CLICommand
{
@Argument
(
metaVar
=
"JOB"
,
usage
=
"Name of the job"
,
required
=
true
)
public
AbstractProject
<?,?>
job
;
@Override
public
String
getShortDescription
()
{
return
"Dumps the job definition XML to stdout"
;
}
protected
int
run
()
throws
Exception
{
job
.
checkPermission
(
Item
.
EXTENDED_READ
);
IOUtils
.
copy
(
job
.
getConfigFile
().
getFile
(),
stdout
);
return
0
;
}
}
core/src/main/java/hudson/cli/UpdateJobXmlCommand.java
0 → 100644
浏览文件 @
6b2af915
/*
* The MIT License
*
* Copyright (c) 2011, CloudBees, Inc.
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package
hudson.cli
;
import
hudson.model.AbstractProject
;
import
hudson.util.IOUtils
;
import
org.kohsuke.args4j.Argument
;
import
javax.xml.transform.stream.StreamSource
;
/**
* @author Kohsuke Kawaguchi
*/
public
class
UpdateJobXmlCommand
extends
CLICommand
{
@Argument
(
metaVar
=
"JOB"
,
usage
=
"Name of the job"
,
required
=
true
)
public
AbstractProject
<?,?>
job
;
@Override
public
String
getShortDescription
()
{
return
"Updates the job definition XML from stdin. The opposite of the get-job-xml command"
;
}
protected
int
run
()
throws
Exception
{
job
.
updateByXml
(
new
StreamSource
(
stdin
));
return
0
;
}
}
core/src/main/java/hudson/model/AbstractItem.java
浏览文件 @
6b2af915
...
...
@@ -51,10 +51,8 @@ import org.kohsuke.stapler.export.ExportedBean;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
org.kohsuke.stapler.StaplerRequest
;
...
...
@@ -509,6 +507,18 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
}
if
(
req
.
getMethod
().
equals
(
"POST"
))
{
// submission
updateByXml
(
new
StreamSource
(
req
.
getReader
()));
return
;
}
// huh?
rsp
.
sendError
(
SC_BAD_REQUEST
);
}
/**
* Updates Job by its XML definition.
*/
public
void
updateByXml
(
StreamSource
source
)
throws
IOException
{
checkPermission
(
CONFIGURE
);
XmlFile
configXmlFile
=
getConfigFile
();
AtomicFileWriter
out
=
new
AtomicFileWriter
(
configXmlFile
.
getFile
());
...
...
@@ -519,7 +529,7 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
// data
Transformer
t
=
TransformerFactory
.
newInstance
()
.
newTransformer
();
t
.
transform
(
new
StreamSource
(
req
.
getReader
())
,
t
.
transform
(
source
,
new
StreamResult
(
out
));
out
.
close
();
}
catch
(
TransformerException
e
)
{
...
...
@@ -535,11 +545,6 @@ public abstract class AbstractItem extends Actionable implements Item, HttpDelet
}
finally
{
out
.
abort
();
// don't leave anything behind
}
return
;
}
// huh?
rsp
.
sendError
(
SC_BAD_REQUEST
);
}
public
String
toString
()
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录