Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
jenkins
提交
be5cd4fd
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,发现更多精彩内容 >>
提交
be5cd4fd
编写于
5月 30, 2013
作者:
J
Jesse Glick
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[FIXED JENKINS-16023] Use permalinks for as many Job.getLast*Build methods as possible.
上级
2b0bd977
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
31 addition
and
21 deletion
+31
-21
changelog.html
changelog.html
+3
-0
core/src/main/java/hudson/model/Job.java
core/src/main/java/hudson/model/Job.java
+4
-21
test/src/test/java/hudson/model/JobTest.java
test/src/test/java/hudson/model/JobTest.java
+24
-0
未找到文件。
changelog.html
浏览文件 @
be5cd4fd
...
...
@@ -64,6 +64,9 @@ Upcoming changes</a>
<li
class=
'major bug'
>
Errors searching build records when builds were misordered.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-15652"
>
issue 15652
</a>
)
<li
class=
'major bug'
>
Finding the last failed build for a job (e.g. from a view column) broke lazy loading.
(
<a
href=
"https://issues.jenkins-ci.org/browse/JENKINS-16023"
>
issue 16023
</a>
)
<li
class=
bug
>
Do not fail startup in case
<code>
ListView.includeRegex
</code>
was syntactically malformed.
<li
class=
bug
>
...
...
core/src/main/java/hudson/model/Job.java
浏览文件 @
be5cd4fd
...
...
@@ -26,7 +26,6 @@ package hudson.model;
import
com.google.common.base.Function
;
import
com.google.common.collect.Collections2
;
import
com.infradna.tool.bridge_method_injector.WithBridgeMethods
;
import
hudson.BulkChange
;
import
hudson.EnvVars
;
import
hudson.Extension
;
import
hudson.ExtensionPoint
;
...
...
@@ -64,7 +63,6 @@ import hudson.widgets.Widget;
import
jenkins.model.BuildDiscarder
;
import
jenkins.model.Jenkins
;
import
jenkins.model.ProjectNamingStrategy
;
import
jenkins.scm.SCMCheckoutStrategy
;
import
jenkins.security.HexStringConfidentialKey
;
import
jenkins.util.io.OnMaster
;
import
net.sf.json.JSONException
;
...
...
@@ -809,11 +807,7 @@ public abstract class Job<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
@Exported
@QuickSilver
public
RunT
getLastUnsuccessfulBuild
()
{
RunT
r
=
getLastBuild
();
while
(
r
!=
null
&&
(
r
.
isBuilding
()
||
r
.
getResult
()
==
Result
.
SUCCESS
))
r
=
r
.
getPreviousBuild
();
return
r
;
return
(
RunT
)
Permalink
.
LAST_UNSUCCESSFUL_BUILD
.
resolve
(
this
);
}
/**
...
...
@@ -823,11 +817,7 @@ public abstract class Job<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
@Exported
@QuickSilver
public
RunT
getLastUnstableBuild
()
{
RunT
r
=
getLastBuild
();
while
(
r
!=
null
&&
(
r
.
isBuilding
()
||
r
.
getResult
()
!=
Result
.
UNSTABLE
))
r
=
r
.
getPreviousBuild
();
return
r
;
return
(
RunT
)
Permalink
.
LAST_UNSTABLE_BUILD
.
resolve
(
this
);
}
/**
...
...
@@ -837,11 +827,7 @@ public abstract class Job<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
@Exported
@QuickSilver
public
RunT
getLastStableBuild
()
{
RunT
r
=
getLastBuild
();
while
(
r
!=
null
&&
(
r
.
isBuilding
()
||
r
.
getResult
().
isWorseThan
(
Result
.
SUCCESS
)))
r
=
r
.
getPreviousBuild
();
return
r
;
return
(
RunT
)
Permalink
.
LAST_STABLE_BUILD
.
resolve
(
this
);
}
/**
...
...
@@ -850,10 +836,7 @@ public abstract class Job<JobT extends Job<JobT, RunT>, RunT extends Run<JobT, R
@Exported
@QuickSilver
public
RunT
getLastFailedBuild
()
{
RunT
r
=
getLastBuild
();
while
(
r
!=
null
&&
(
r
.
isBuilding
()
||
r
.
getResult
()
!=
Result
.
FAILURE
))
r
=
r
.
getPreviousBuild
();
return
r
;
return
(
RunT
)
Permalink
.
LAST_FAILED_BUILD
.
resolve
(
this
);
}
/**
...
...
test/src/test/java/hudson/model/JobTest.java
浏览文件 @
be5cd4fd
...
...
@@ -31,6 +31,7 @@ import com.gargoylesoftware.htmlunit.TextPage;
import
hudson.util.TextFile
;
import
java.io.IOException
;
import
java.net.HttpURLConnection
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.CountDownLatch
;
import
jenkins.model.ProjectNamingStrategy
;
...
...
@@ -39,7 +40,9 @@ import static org.junit.Assert.*;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.jvnet.hudson.test.Bug
;
import
org.jvnet.hudson.test.FailureBuilder
;
import
org.jvnet.hudson.test.JenkinsRule
;
import
org.jvnet.hudson.test.RunLoadCounter
;
import
org.jvnet.hudson.test.recipes.LocalData
;
/**
...
...
@@ -253,4 +256,25 @@ public class JobTest {
}
j
.
createFreeStyleProject
(
"project"
);
}
@Bug
(
16023
)
@Test
public
void
getLastFailedBuild
()
throws
Exception
{
final
FreeStyleProject
p
=
j
.
createFreeStyleProject
();
RunLoadCounter
.
prepare
(
p
);
p
.
getBuildersList
().
add
(
new
FailureBuilder
());
j
.
assertBuildStatus
(
Result
.
FAILURE
,
p
.
scheduleBuild2
(
0
).
get
());
j
.
assertBuildStatus
(
Result
.
FAILURE
,
p
.
scheduleBuild2
(
0
).
get
());
j
.
assertBuildStatus
(
Result
.
FAILURE
,
p
.
scheduleBuild2
(
0
).
get
());
p
.
getBuildersList
().
remove
(
FailureBuilder
.
class
);
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
));
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
));
j
.
assertBuildStatusSuccess
(
p
.
scheduleBuild2
(
0
));
assertEquals
(
6
,
p
.
getLastSuccessfulBuild
().
getNumber
());
assertEquals
(
3
,
RunLoadCounter
.
assertMaxLoads
(
p
,
1
,
new
Callable
<
Integer
>()
{
@Override
public
Integer
call
()
throws
Exception
{
return
p
.
getLastFailedBuild
().
getNumber
();
}
}).
intValue
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录