Skip to content

Commit 91911e2

Browse files
committed
Merge branch 'debianpackageplugin'
Conflicts: job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/step/StepContext.groovy job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/step/StepContextSpec.groovy
2 parents 3387104 + 31ae709 commit 91911e2

File tree

5 files changed

+115
-0
lines changed

5 files changed

+115
-0
lines changed

docs/Home.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Have a look at the [Jenkins Job DSL Gradle example](https://github.com/sheehan/j
2020
* Added support for [Build Node Column Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Build+Node+Column+Plugin)
2121
* Added support for [Pre-SCM Build Step Plugin](https://wiki.jenkins-ci.org/display/JENKINS/pre-scm-buildstep)
2222
* Added support for [Sonar Plugin](http://docs.sonarqube.org/display/SONAR/Jenkins+Plugin)
23+
* Added support for [Debian Package Builder Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Debian+Package+Builder+Plugin)
2324
* Added `recurse` option for list views
2425
* Added `ignorePostCommitHooks` option for SCM trigger
2526
* Added `commentFilePath` option for [GitHub Pull Request Builder Plugin](https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin)

docs/Job-reference.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ freeStyleJob(String name) { // since 1.30
139139
boolean flattenFiles, boolean optionalAllowed,
140140
Closure copyArtifactClosure)
141141
criticalBlock(Closure stepClosure) // since 1.24
142+
debianPackage(String path, Closure debianClosure = null) // since 1.31
142143
downstreamParameterized(Closure downstreamClosure)
143144
dsl(Closure dslClosure)
144145
dsl(String scriptText, String removedJobAction = null,
@@ -3067,6 +3068,36 @@ When a job is checked the following conditions must be validated before the job
30673068

30683069
(Since 1.19)
30693070

3071+
# Debian Package Builder
3072+
3073+
```groovy
3074+
job {
3075+
step {
3076+
debianPackage(String path) {
3077+
signPackage(boolean sign = true) // defaults to true
3078+
generateChangelog(String nextVersion = null, boolean alwaysBuild = false)
3079+
}
3080+
}
3081+
}
3082+
```
3083+
3084+
Requires the [Debian Package Builder Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Debian+Package+Builder+Plugin).
3085+
3086+
The `path` parameter refers to a path in the workspace where the 'debian' catalog is stored. The plugin will
3087+
automatically install packages required to build Debian packages.
3088+
3089+
```groovy
3090+
job {
3091+
step {
3092+
debianPackage('module') {
3093+
generateChangelog()
3094+
}
3095+
}
3096+
}
3097+
```
3098+
3099+
(since 1.31)
3100+
30703101
# [Parameterized Trigger as Build Step](https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin)
30713102

30723103
```groovy
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package javaposse.jobdsl.dsl.helpers.step
2+
3+
import javaposse.jobdsl.dsl.Context
4+
5+
class DebianContext implements Context {
6+
boolean generateChangelog
7+
String nextVersion
8+
boolean alwaysBuild
9+
boolean signPackage = true
10+
11+
void generateChangelog(String nextVersion = null, boolean alwaysBuild = false) {
12+
this.generateChangelog = true
13+
this.nextVersion = nextVersion
14+
this.alwaysBuild = alwaysBuild
15+
}
16+
17+
void signPackage(boolean signPackage = true) {
18+
this.signPackage = signPackage
19+
}
20+
}

job-dsl-core/src/main/groovy/javaposse/jobdsl/dsl/helpers/step/StepContext.groovy

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1059,4 +1059,30 @@ class StepContext implements Context {
10591059
nodeJSInstallationName(installation)
10601060
}
10611061
}
1062+
1063+
/**
1064+
* <ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder>
1065+
* <pathToDebian>package</pathToDebian>
1066+
* <nextVersion></nextVersion>
1067+
* <generateChangelog>false</generateChangelog>
1068+
* <signPackage>false</signPackage>
1069+
* <buildEvenWhenThereAreNoChanges>false</buildEvenWhenThereAreNoChanges>
1070+
* </ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder>
1071+
*/
1072+
void debianPackage(String path, @DslContext(DebianContext) Closure closure = null) {
1073+
jobManagement.requireMinimumPluginVersion('debian-package-builder', '1.6.6')
1074+
1075+
Preconditions.checkArgument(!isNullOrEmpty(path), 'path must be specified')
1076+
1077+
DebianContext context = new DebianContext()
1078+
ContextHelper.executeInContext(closure, context)
1079+
1080+
stepNodes << new NodeBuilder().'ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder' {
1081+
pathToDebian(path)
1082+
nextVersion(context.nextVersion ?: '')
1083+
generateChangelog(context.generateChangelog)
1084+
signPackage(context.signPackage)
1085+
buildEvenWhenThereAreNoChanges(context.alwaysBuild)
1086+
}
1087+
}
10621088
}

job-dsl-core/src/test/groovy/javaposse/jobdsl/dsl/helpers/step/StepContextSpec.groovy

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2256,4 +2256,41 @@ still-another-dsl.groovy'''
22562256
nodeJSInstallationName[0].value() == 'node (0.0.1)'
22572257
}
22582258
}
2259+
2260+
def 'call debian package with only required option'() {
2261+
when:
2262+
context.debianPackage('package')
2263+
2264+
then:
2265+
with(context.stepNodes[0]) {
2266+
name() == 'ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder'
2267+
children().size() == 5
2268+
pathToDebian[0].value() == 'package'
2269+
nextVersion[0].value() == ''
2270+
generateChangelog[0].value() == false
2271+
signPackage[0].value() == true
2272+
buildEvenWhenThereAreNoChanges[0].value() == false
2273+
}
2274+
_ * jobManagement.requireMinimumPluginVersion('debian-package-builder', '1.6.6')
2275+
}
2276+
2277+
def 'call debian package with all options'() {
2278+
when:
2279+
context.debianPackage('package') {
2280+
signPackage(false)
2281+
generateChangelog('1.0', true)
2282+
}
2283+
2284+
then:
2285+
with(context.stepNodes[0]) {
2286+
name() == 'ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder'
2287+
children().size() == 5
2288+
pathToDebian[0].value() == 'package'
2289+
nextVersion[0].value() == '1.0'
2290+
generateChangelog[0].value() == true
2291+
signPackage[0].value() == false
2292+
buildEvenWhenThereAreNoChanges[0].value() == true
2293+
}
2294+
_ * jobManagement.requireMinimumPluginVersion('debian-package-builder', '1.6.6')
2295+
}
22592296
}

0 commit comments

Comments
 (0)