Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
f8dd5842
J
jenkins
项目概览
LinuxSuRen
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
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,发现更多精彩内容 >>
提交
f8dd5842
编写于
8月 04, 2017
作者:
A
Andrew Bayer
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[FIXED JENKINS-45909] ReverseBuildTrigger.upstreamProjects should be null safe
上级
7550d796
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
4 deletion
+19
-4
core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java
core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java
+4
-4
test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java
...c/test/java/jenkins/triggers/ReverseBuildTriggerTest.java
+15
-0
未找到文件。
core/src/main/java/jenkins/triggers/ReverseBuildTrigger.java
浏览文件 @
f8dd5842
...
@@ -170,7 +170,7 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
...
@@ -170,7 +170,7 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
}
}
@Override
public
void
buildDependencyGraph
(
final
AbstractProject
downstream
,
DependencyGraph
graph
)
{
@Override
public
void
buildDependencyGraph
(
final
AbstractProject
downstream
,
DependencyGraph
graph
)
{
for
(
AbstractProject
upstream
:
Items
.
fromNameList
(
downstream
.
getParent
(),
upstreamProjects
,
AbstractProject
.
class
))
{
for
(
AbstractProject
upstream
:
Items
.
fromNameList
(
downstream
.
getParent
(),
Util
.
fixNull
(
upstreamProjects
)
,
AbstractProject
.
class
))
{
graph
.
addDependency
(
new
DependencyGraph
.
Dependency
(
upstream
,
downstream
)
{
graph
.
addDependency
(
new
DependencyGraph
.
Dependency
(
upstream
,
downstream
)
{
@Override
public
boolean
shouldTriggerBuild
(
AbstractBuild
upstreamBuild
,
TaskListener
listener
,
List
<
Action
>
actions
)
{
@Override
public
boolean
shouldTriggerBuild
(
AbstractBuild
upstreamBuild
,
TaskListener
listener
,
List
<
Action
>
actions
)
{
return
shouldTrigger
(
upstreamBuild
,
listener
);
return
shouldTrigger
(
upstreamBuild
,
listener
);
...
@@ -253,7 +253,7 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
...
@@ -253,7 +253,7 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
continue
;
continue
;
}
}
List
<
Job
>
upstreams
=
List
<
Job
>
upstreams
=
Items
.
fromNameList
(
downstream
.
getParent
(),
trigger
.
upstreamProjects
,
Job
.
class
);
Items
.
fromNameList
(
downstream
.
getParent
(),
Util
.
fixNull
(
trigger
.
upstreamProjects
)
,
Job
.
class
);
LOGGER
.
log
(
Level
.
FINE
,
"from {0} see upstreams {1}"
,
new
Object
[]{
downstream
,
upstreams
});
LOGGER
.
log
(
Level
.
FINE
,
"from {0} see upstreams {1}"
,
new
Object
[]{
downstream
,
upstreams
});
for
(
Job
upstream
:
upstreams
)
{
for
(
Job
upstream
:
upstreams
)
{
if
(
upstream
instanceof
AbstractProject
&&
downstream
instanceof
AbstractProject
)
{
if
(
upstream
instanceof
AbstractProject
&&
downstream
instanceof
AbstractProject
)
{
...
@@ -310,8 +310,8 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
...
@@ -310,8 +310,8 @@ public final class ReverseBuildTrigger extends Trigger<Job> implements Dependenc
ReverseBuildTrigger
t
=
ParameterizedJobMixIn
.
getTrigger
(
p
,
ReverseBuildTrigger
.
class
);
ReverseBuildTrigger
t
=
ParameterizedJobMixIn
.
getTrigger
(
p
,
ReverseBuildTrigger
.
class
);
if
(
t
!=
null
)
{
if
(
t
!=
null
)
{
String
revised
=
String
revised
=
Items
.
computeRelativeNamesAfterRenaming
(
oldFullName
,
newFullName
,
t
.
upstreamProjects
,
Items
.
computeRelativeNamesAfterRenaming
(
oldFullName
,
newFullName
,
p
.
getParent
());
Util
.
fixNull
(
t
.
upstreamProjects
),
p
.
getParent
());
if
(!
revised
.
equals
(
t
.
upstreamProjects
))
{
if
(!
revised
.
equals
(
t
.
upstreamProjects
))
{
t
.
upstreamProjects
=
revised
;
t
.
upstreamProjects
=
revised
;
try
{
try
{
...
...
test/src/test/java/jenkins/triggers/ReverseBuildTriggerTest.java
浏览文件 @
f8dd5842
...
@@ -209,4 +209,19 @@ public class ReverseBuildTriggerTest {
...
@@ -209,4 +209,19 @@ public class ReverseBuildTriggerTest {
assertThat
(
"Build should be not triggered"
,
downstreamJob1
.
getBuilds
(),
hasSize
(
0
));
assertThat
(
"Build should be not triggered"
,
downstreamJob1
.
getBuilds
(),
hasSize
(
0
));
assertThat
(
"Build should be triggered"
,
downstreamJob2
.
getBuilds
(),
not
(
hasSize
(
0
)));
assertThat
(
"Build should be triggered"
,
downstreamJob2
.
getBuilds
(),
not
(
hasSize
(
0
)));
}
}
@Issue
(
"JENKINS-45909"
)
@Test
public
void
nullUpstreamProjectsNoNPE
()
throws
Exception
{
//job with trigger.upstreamProjects == null
final
FreeStyleProject
downstreamJob1
=
r
.
createFreeStyleProject
(
"downstream1"
);
ReverseBuildTrigger
trigger
=
new
ReverseBuildTrigger
(
null
);
downstreamJob1
.
addTrigger
(
trigger
);
downstreamJob1
.
save
();
r
.
configRoundtrip
(
downstreamJob1
);
// The reported issue was with Pipeline jobs, which calculate their dependency graphs via
// ReverseBuildTrigger.RunListenerImpl, so an additional test may be needed downstream.
trigger
.
buildDependencyGraph
(
downstreamJob1
,
Jenkins
.
getInstance
().
getDependencyGraph
());
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录