Skip to content

Commit 7d95941

Browse files
committed
Merge pull request #402 from CoreMedia/build-node-column
added support for Build Node Column Plugin
2 parents 9d3398c + 1bc52ee commit 7d95941

File tree

9 files changed

+38
-7
lines changed

9 files changed

+38
-7
lines changed

docs/Home.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Have a look at the [Jenkins Job DSL Gradle example](https://github.com/sheehan/j
1717

1818
## Release Notes
1919
* 1.31 (unreleased)
20+
* Added support for [Build Node Column Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Build+Node+Column+Plugin)
2021
* Added support for [Pre-SCM Build Step Plugin](https://wiki.jenkins-ci.org/display/JENKINS/pre-scm-buildstep)
2122
* Added `ignorePostCommitHooks` option for SCM trigger
2223
* The enum argument of `localRepository` for the Maven job and context has changed, see [[Migration]]

docs/View-Reference.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ listView(String name) { // since 1.30
3939
buildButton()
4040
lastBuildConsole() // since 1.23, requires the Extra Columns Plugin
4141
claim() // since 1.29, requires the Claim Plugin
42+
lastBuildNode() // since 1.31, requires the Build Node Column Plugin
4243
}
4344
}
4445
view(type: ListView, Closure viewClosure) // since 1.21, deprecated since 1.30
@@ -468,6 +469,7 @@ columns {
468469
buildButton()
469470
lastBuildConsole() // since 1.23, requires the Extra Columns Plugin
470471
claim() // since 1.29, requires the Claim Plugin
472+
lastBuildNode() // since 1.31, requires the Build Node Column Plugin
471473
}
472474
```
473475

job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/views/ColumnsContext.groovy

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
package javaposse.jobdsl.dsl.views
22

33
import javaposse.jobdsl.dsl.Context
4+
import javaposse.jobdsl.dsl.JobManagement
45

56
class ColumnsContext implements Context {
7+
private final JobManagement jobManagement
68
List<Node> columnNodes = []
79

10+
ColumnsContext(JobManagement jobManagement) {
11+
this.jobManagement = jobManagement
12+
}
13+
814
void status() {
915
columnNodes << new Node(null, 'hudson.views.StatusColumn')
1016
}
@@ -40,4 +46,9 @@ class ColumnsContext implements Context {
4046
void claim() {
4147
columnNodes << new Node(null, 'hudson.plugins.claim.ClaimColumn')
4248
}
49+
50+
void lastBuildNode() {
51+
jobManagement.requireMinimumPluginVersion('build-node-column', '0.1')
52+
columnNodes << new Node(null, 'org.jenkins.plugins.column.LastBuildNodeColumn')
53+
}
4354
}

job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/views/ListView.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class ListView extends View {
4747
}
4848

4949
void columns(@DslContext(ColumnsContext) Closure columnsClosure) {
50-
ColumnsContext context = new ColumnsContext()
50+
ColumnsContext context = new ColumnsContext(jobManagement)
5151
executeInContext(columnsClosure, context)
5252

5353
execute {

job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/views/ListViewSectionContext.groovy

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package javaposse.jobdsl.dsl.views
22

33
import javaposse.jobdsl.dsl.Context
44
import javaposse.jobdsl.dsl.DslContext
5+
import javaposse.jobdsl.dsl.JobManagement
56

67
import static com.google.common.base.Preconditions.checkArgument
78
import static javaposse.jobdsl.dsl.ContextHelper.executeInContext
@@ -10,12 +11,17 @@ class ListViewSectionContext implements Context {
1011
private static final List<String> VALID_WIDTHS = ['FULL', 'HALF', 'THIRD', 'TWO_THIRDS']
1112
private static final List<String> VALID_ALIGNMENTS = ['CENTER', 'LEFT', 'RIGHT']
1213

14+
private final JobManagement jobManagement
1315
String name
1416
String width = 'FULL'
1517
String alignment = 'CENTER'
1618
JobsContext jobsContext = new JobsContext()
1719
JobFiltersContext jobFiltersContext = new JobFiltersContext()
18-
ColumnsContext columnsContext = new ColumnsContext()
20+
ColumnsContext columnsContext = new ColumnsContext(jobManagement)
21+
22+
ListViewSectionContext(JobManagement jobManagement) {
23+
this.jobManagement = jobManagement
24+
}
1925

2026
void name(String name) {
2127
this.name = name

job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/views/SectionedView.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class SectionedView extends View {
1212
}
1313

1414
void sections(@DslContext(SectionsContext) Closure sectionsClosure) {
15-
SectionsContext context = new SectionsContext()
15+
SectionsContext context = new SectionsContext(jobManagement)
1616
executeInContext(sectionsClosure, context)
1717

1818
execute {

job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/views/SectionsContext.groovy

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,19 @@ package javaposse.jobdsl.dsl.views
22

33
import javaposse.jobdsl.dsl.Context
44
import javaposse.jobdsl.dsl.DslContext
5+
import javaposse.jobdsl.dsl.JobManagement
56

67
import static java.lang.String.CASE_INSENSITIVE_ORDER
78
import static javaposse.jobdsl.dsl.ContextHelper.executeInContext
89

910
class SectionsContext implements Context {
11+
private final JobManagement jobManagement
1012
List<Node> sectionNodes = []
1113

14+
SectionsContext(JobManagement jobManagement) {
15+
this.jobManagement = jobManagement
16+
}
17+
1218
/**
1319
* <hudson.plugins.sectioned__view.ListViewSection>
1420
* <jobNames>
@@ -32,7 +38,7 @@ class SectionsContext implements Context {
3238
* </hudson.plugins.sectioned__view.ListViewSection>
3339
*/
3440
void listView(@DslContext(ListViewSectionContext) Closure listViewSectionClosure) {
35-
ListViewSectionContext context = new ListViewSectionContext()
41+
ListViewSectionContext context = new ListViewSectionContext(jobManagement)
3642
executeInContext(listViewSectionClosure, context)
3743

3844
sectionNodes << new NodeBuilder().'hudson.plugins.sectioned__view.ListViewSection' {

job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/views/BuildMonitorViewSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package javaposse.jobdsl.dsl.views
22

33
class BuildMonitorViewSpec extends ListViewSpec {
44
def setup() {
5-
view = new BuildMonitorView()
5+
view = new BuildMonitorView(jobManagement)
66
}
77

88
protected String getDefaultXml() {

job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/views/ListViewSpec.groovy

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package javaposse.jobdsl.dsl.views
22

3+
import javaposse.jobdsl.dsl.JobManagement
34
import javaposse.jobdsl.dsl.views.jobfilter.RegexMatchValue
45
import javaposse.jobdsl.dsl.views.jobfilter.Status
56
import spock.lang.Specification
@@ -15,7 +16,8 @@ import static org.custommonkey.xmlunit.XMLUnit.compareXML
1516
import static org.custommonkey.xmlunit.XMLUnit.setIgnoreWhitespace
1617

1718
class ListViewSpec extends Specification {
18-
ListView view = new ListView()
19+
JobManagement jobManagement = Mock(JobManagement)
20+
ListView view = new ListView(jobManagement)
1921

2022
def 'defaults'() {
2123
when:
@@ -203,12 +205,13 @@ class ListViewSpec extends Specification {
203205
lastDuration()
204206
buildButton()
205207
claim()
208+
lastBuildNode()
206209
}
207210

208211
then:
209212
Node root = view.node
210213
root.columns.size() == 1
211-
root.columns[0].value().size() == 8
214+
root.columns[0].value().size() == 9
212215
root.columns[0].value()[0].name() == 'hudson.views.StatusColumn'
213216
root.columns[0].value()[1].name() == 'hudson.views.WeatherColumn'
214217
root.columns[0].value()[2].name() == 'hudson.views.JobColumn'
@@ -217,6 +220,8 @@ class ListViewSpec extends Specification {
217220
root.columns[0].value()[5].name() == 'hudson.views.LastDurationColumn'
218221
root.columns[0].value()[6].name() == 'hudson.views.BuildButtonColumn'
219222
root.columns[0].value()[7].name() == 'hudson.plugins.claim.ClaimColumn'
223+
root.columns[0].value()[8].name() == 'org.jenkins.plugins.column.LastBuildNodeColumn'
224+
_ * jobManagement.requireMinimumPluginVersion('build-node-column', '0.1')
220225
}
221226

222227
def 'call columns twice'() {

0 commit comments

Comments
 (0)