Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
roginluo
Jenkins
提交
33e0df78
J
Jenkins
项目概览
roginluo
/
Jenkins
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
Jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
33e0df78
编写于
4月 12, 2012
作者:
L
lvotypko
提交者:
Kohsuke Kawaguchi
4月 14, 2012
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extension point for adding actions into build page
上级
7609248d
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
46 addition
and
24 deletion
+46
-24
core/src/main/java/hudson/model/AbstractBuild.java
core/src/main/java/hudson/model/AbstractBuild.java
+1
-20
core/src/main/java/hudson/model/Run.java
core/src/main/java/hudson/model/Run.java
+33
-1
core/src/main/java/hudson/model/TransientBuildActionFactory.java
...c/main/java/hudson/model/TransientBuildActionFactory.java
+3
-3
core/src/main/resources/hudson/model/AbstractBuild/sidepanel.jelly
...main/resources/hudson/model/AbstractBuild/sidepanel.jelly
+9
-0
未找到文件。
core/src/main/java/hudson/model/AbstractBuild.java
浏览文件 @
33e0df78
...
...
@@ -885,25 +885,6 @@ public abstract class AbstractBuild<P extends AbstractProject<P,R>,R extends Abs
return
getTimestamp
();
}
/**
* Add all transient action for this build
*
*/
protected
List
<
Action
>
createTransientActions
()
{
Vector
<
Action
>
ta
=
new
Vector
<
Action
>();
for
(
TransientBuildActionFactory
tpaf
:
TransientBuildActionFactory
.
all
())
ta
.
addAll
(
Util
.
fixNull
(
tpaf
.
createFor
(
this
)));
return
ta
;
}
// commented out until fixed problem with adding actions, see discussion under https://github.com/jenkinsci/jenkins/pull/421
/* @Override
public List<Action> getActions() {
List<Action> actions = new CopyOnWriteArrayList<Action>(super.getActions());
actions.addAll(createTransientActions());
return actions;
}
*/
public
List
<
Action
>
getPersistentActions
(){
return
super
.
getActions
();
}
...
...
core/src/main/java/hudson/model/Run.java
浏览文件 @
33e0df78
...
...
@@ -243,6 +243,8 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
*/
private
volatile
transient
Runner
runner
;
protected
transient
List
<
Action
>
transientActions
;
protected
static
final
ThreadLocal
<
SimpleDateFormat
>
ID_FORMATTER
=
new
ThreadLocal
<
SimpleDateFormat
>()
{
@Override
...
...
@@ -272,6 +274,7 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
this
.
timestamp
=
timestamp
;
this
.
state
=
State
.
NOT_STARTED
;
getRootDir
().
mkdirs
();
transientActions
=
updateTransientActions
();
}
/**
...
...
@@ -304,6 +307,29 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
for
(
Action
a
:
getActions
())
if
(
a
instanceof
RunAction
)
((
RunAction
)
a
).
onLoad
();
transientActions
=
updateTransientActions
();
}
/**
* Return all transient actions associated with this build
*
* @return transient actions
*/
public
List
<
Action
>
getTransientActions
(){
return
transientActions
;
}
/**
* Create transient actions for this build
*
* @return transient actions
*/
public
List
<
Action
>
updateTransientActions
(){
List
<
Action
>
actions
=
new
ArrayList
<
Action
>();
for
(
TransientBuildActionFactory
factory:
TransientBuildActionFactory
.
all
()){
actions
.
addAll
(
factory
.
createFor
(
this
));
}
return
actions
;
}
@Override
...
...
@@ -2059,11 +2085,17 @@ public abstract class Run <JobT extends Job<JobT,RunT>,RunT extends Run<JobT,Run
@Override
public
Object
getDynamic
(
String
token
,
StaplerRequest
req
,
StaplerResponse
rsp
)
{
Object
result
=
super
.
getDynamic
(
token
,
req
,
rsp
);
if
(
result
==
null
)
if
(
result
==
null
){
//check transient actions too
for
(
Action
action:
transientActions
){
if
(
action
.
getUrlName
().
equals
(
token
))
return
action
;
}
// Next/Previous Build links on an action page (like /job/Abc/123/testReport)
// will also point to same action (/job/Abc/124/testReport), but other builds
// may not have the action.. tell browsers to redirect up to the build page.
result
=
new
RedirectUp
();
}
return
result
;
}
...
...
core/src/main/java/hudson/model/TransientBuildActionFactory.java
浏览文件 @
33e0df78
...
...
@@ -7,7 +7,7 @@ import jenkins.model.Jenkins;
import
java.util.Collection
;
/**
* Extension point for inserting transient {@link Action}s into {@link
AbstractBuild
}s.
* Extension point for inserting transient {@link Action}s into {@link
Run
}s.
*
* To register your implementation, put {@link Extension} on your subtype.
*
...
...
@@ -20,10 +20,10 @@ public abstract class TransientBuildActionFactory implements ExtensionPoint {
/**
* Creates actions for the given build.
*
* @param
project
for which the action objects are requested. Never null.
* @param
Build
for which the action objects are requested. Never null.
* @return Can be empty but must not be null.
*/
public
abstract
Collection
<?
extends
Action
>
createFor
(
AbstractBuild
target
);
public
abstract
Collection
<?
extends
Action
>
createFor
(
Run
target
);
/**
* Returns all the registered {@link TransientBuildActionFactory}s.
...
...
core/src/main/resources/hudson/model/AbstractBuild/sidepanel.jelly
浏览文件 @
33e0df78
...
...
@@ -33,6 +33,15 @@ THE SOFTWARE.
<j:set var="buildUrl" value="${h.decompose(request)}" />
<st:include page="tasks.jelly"/>
<st:include page="actions.jelly" />
<!-- add transient actions too -->
<j:forEach var="action" items="${it.transientActions}">
<st:include page="action.jelly" from="${action}" optional="true">
<j:if test="${action.iconFileName!=null}">
<l:task icon="${h.getIconFilePath(action)}" title="${action.displayName}"
href="${h.getActionUrl(it.url,action)}" />
</j:if>
</st:include>
</j:forEach>
<j:if test="${it.previousBuild!=null}">
<l:task icon="images/24x24/previous.png" href="${buildUrl.previousBuildUrl}" title="${%Previous Build}" contextMenu="false"/>
</j:if>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录