Skip to content

Commit 2a84211

Browse files
author
Michael Legart
committed
Added support for Debian Package plugin.
1 parent 725e8f7 commit 2a84211

File tree

4 files changed

+107
-0
lines changed

4 files changed

+107
-0
lines changed

docs/Job-reference.md

Lines changed: 17 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)
142143
downstreamParameterized(Closure downstreamClosure)
143144
dsl(Closure dslClosure)
144145
dsl(String scriptText, String removedJobAction = null,
@@ -3044,6 +3045,22 @@ When a job is checked the following conditions must be validated before the job
30443045

30453046
(Since 1.19)
30463047

3048+
# [Debian Package Builder Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Debian+Package+Builder+Plugin)
3049+
3050+
```groovy
3051+
debianPackage(String path, Closure debianClosure) {
3052+
signPackage(true) // Sign package with GPG (key configured in Jenkins settings)
3053+
generateChangelog(false) // Build changelog from Git
3054+
buildEvenWhenThereAreNoChanges(false) // Build package if no changes has been made in SCM
3055+
}
3056+
```
3057+
3058+
Supports <a href="https://wiki.jenkins-ci.org/display/JENKINS/Debian+Package+Builder+Plugin">the Debian PackageBuilder Plugin</a>.
3059+
3060+
Path refers to a path in the workspace where the 'debian' catalog is stored.
3061+
3062+
The plugin will automatically install packages required to build Debian packages.
3063+
30473064
# [Parameterized Trigger as Build Step](https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin)
30483065

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

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
@@ -1116,4 +1116,30 @@ class StepContext implements Context {
11161116
}
11171117
}
11181118
}
1119+
1120+
/**
1121+
* <ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder plugin="debian-package-builder@1.6.6">
1122+
* <pathToDebian>package</pathToDebian>
1123+
* <nextVersion></nextVersion>
1124+
* <generateChangelog>false</generateChangelog>
1125+
* <signPackage>false</signPackage>
1126+
* <buildEvenWhenThereAreNoChanges>false</buildEvenWhenThereAreNoChanges>
1127+
* </ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder>
1128+
*/
1129+
void debianPackage(String path, @DslContext(DebianContext) Closure closure = null) {
1130+
Preconditions.checkArgument(!isNullOrEmpty(path), 'path must be specified')
1131+
1132+
DebianContext context = new DebianContext()
1133+
ContextHelper.executeInContext(closure, context)
1134+
1135+
stepNodes << new NodeBuilder().'ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder' {
1136+
pathToDebian(path)
1137+
if (context.nextVersion != null) {
1138+
nextVersion(context.nextVersion)
1139+
}
1140+
generateChangelog(context.generateChangelog)
1141+
signPackage(context.signPackage)
1142+
buildEvenWhenThereAreNoChanges(context.buildEvenWhenThereAreNoChanges)
1143+
}
1144+
}
11191145
}

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
@@ -2451,4 +2451,41 @@ still-another-dsl.groovy'''
24512451
where:
24522452
mode << ['GET', 'POST', 'PUT', 'DELETE']
24532453
}
2454+
2455+
def 'call debian package with only required option'() {
2456+
when:
2457+
context.debianPackage('package')
2458+
2459+
then:
2460+
context.stepNodes.size() == 1
2461+
with(context.stepNodes[0]) {
2462+
name() == 'ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder'
2463+
pathToDebian[0].value() == 'package'
2464+
signPackage[0].value() == false
2465+
generateChangelog[0].value() == false
2466+
buildEvenWhenThereAreNoChanges[0].value() == false
2467+
}
2468+
2469+
}
2470+
2471+
def 'call debian package with all options'() {
2472+
when:
2473+
context.debianPackage('package') {
2474+
signPackage(true)
2475+
generateChangelog(true)
2476+
buildEvenWhenThereAreNoChanges(true)
2477+
}
2478+
2479+
then:
2480+
context.stepNodes.size() == 1
2481+
with(context.stepNodes[0]) {
2482+
name() == 'ru.yandex.jenkins.plugins.debuilder.DebianPackageBuilder'
2483+
pathToDebian[0].value() == 'package'
2484+
signPackage[0].value() == true
2485+
generateChangelog[0].value() == true
2486+
buildEvenWhenThereAreNoChanges[0].value() == true
2487+
}
2488+
2489+
}
2490+
24542491
}

0 commit comments

Comments
 (0)