File tree Expand file tree Collapse file tree 5 files changed +114
-0
lines changed
main/groovy/javaposse/jobdsl/dsl/helpers/wrapper
test/groovy/javaposse/jobdsl/dsl/helpers/wrapper Expand file tree Collapse file tree 5 files changed +114
-0
lines changed Original file line number Diff line number Diff 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 [ Pre-SCM Build Step Plugin] ( https://wiki.jenkins-ci.org/display/JENKINS/pre-scm-buildstep )
2021 * The enum argument of ` localRepository ` for the Maven job and context has changed, see [[ Migration]]
2122* 1.30 (March 08 2015)
2223 * Added support for [ Custom Tools Plugin] ( https://wiki.jenkins-ci.org/display/JENKINS/Custom+Tools+Plugin )
Original file line number Diff line number Diff line change @@ -108,6 +108,7 @@ freeStyleJob(String name) { // since 1.30
108108 maskPasswords() // since 1.26
109109 nodejs(String installation) // since 1.27
110110 preBuildCleanup(Closure closure = null) // since 1.22
111+ preScmSteps(Closure closure) // since 1.31
111112 rbenv(String rubyVersion, Closure rbenvClosure = null) // since 1.27
112113 release(Closure releaseClosure) // since 1.22
113114 runOnSameNodeAs(String jobName, boolean useSameWorkspace = false)
@@ -1854,6 +1855,39 @@ job('example') {
18541855
18551856(since 1.22)
18561857
1858+ ### Pre SCM Build Steps
1859+
1860+ ``` groovy
1861+ job {
1862+ wrappers {
1863+ preScmSteps {
1864+ steps(Closure stepClosure)
1865+ failOnError(boolean failOnError = true) // defaults to false
1866+ }
1867+ }
1868+ }
1869+ ```
1870+
1871+ Allows build steps to run before SCM checkout. Requires the
1872+ [ Pre-SCM Build Step Plugin] ( https://wiki.jenkins-ci.org/display/JENKINS/pre-scm-buildstep ) .
1873+
1874+ See [ Build Steps] ( #build-steps ) for available steps in the ` stepClosure ` .
1875+
1876+ ``` groovy
1877+ job {
1878+ wrappers {
1879+ preScmSteps {
1880+ steps {
1881+ shell('echo Hello World')
1882+ }
1883+ failOnError()
1884+ }
1885+ }
1886+ }
1887+ ```
1888+
1889+ (since 1.31)
1890+
18571891### Log File Size Checker Plugin
18581892
18591893``` groovy
Original file line number Diff line number Diff line change 1+ package javaposse.jobdsl.dsl.helpers.wrapper
2+
3+ import javaposse.jobdsl.dsl.Context
4+ import javaposse.jobdsl.dsl.ContextHelper
5+ import javaposse.jobdsl.dsl.DslContext
6+ import javaposse.jobdsl.dsl.JobManagement
7+ import javaposse.jobdsl.dsl.helpers.step.StepContext
8+
9+ class PreScmStepsContext implements Context {
10+ final StepContext stepContext
11+ boolean failOnError
12+
13+ PreScmStepsContext (JobManagement jobManagement ) {
14+ this . stepContext = new StepContext (jobManagement)
15+ }
16+
17+ void steps (@DslContext (StepContext ) Closure closure ) {
18+ ContextHelper . executeInContext(closure, stepContext)
19+ }
20+
21+ void failOnError (boolean failOnError = true ) {
22+ this . failOnError = failOnError
23+ }
24+ }
Original file line number Diff line number Diff line change @@ -751,4 +751,24 @@ class WrapperContext implements Context {
751751 convertHomesToUppercase context. convertHomesToUppercase
752752 }
753753 }
754+
755+ /**
756+ * <org.jenkinsci.plugins.preSCMbuildstep.PreSCMBuildStepsWrapper>
757+ * <buildSteps>
758+ * <hudson.tasks.Shell>
759+ * <command>echo hello</command>
760+ * </hudson.tasks.Shell>
761+ * </buildSteps>
762+ * <failOnError>false</failOnError>
763+ * </org.jenkinsci.plugins.preSCMbuildstep.PreSCMBuildStepsWrapper>
764+ */
765+ void preScmSteps (@DslContext (PreScmStepsContext ) Closure closure ) {
766+ PreScmStepsContext context = new PreScmStepsContext (jobManagement)
767+ ContextHelper . executeInContext(closure, context)
768+
769+ wrapperNodes << new NodeBuilder (). ' org.jenkinsci.plugins.preSCMbuildstep.PreSCMBuildStepsWrapper' {
770+ buildSteps(context. stepContext. stepNodes)
771+ failOnError(context. failOnError)
772+ }
773+ }
754774}
Original file line number Diff line number Diff line change @@ -1013,4 +1013,39 @@ class WrapperContextSpec extends Specification {
10131013 }
10141014 }
10151015 }
1016+
1017+ def ' pre SCM build steps with minimal options' () {
1018+ when :
1019+ context. preScmSteps {
1020+ }
1021+
1022+ then :
1023+ with(context. wrapperNodes[0 ]) {
1024+ name() == ' org.jenkinsci.plugins.preSCMbuildstep.PreSCMBuildStepsWrapper'
1025+ children(). size() == 2
1026+ buildSteps[0 ]. children(). size() == 0
1027+ failOnError[0 ]. value() == false
1028+ }
1029+ }
1030+
1031+ def ' pre SCM build steps with all options' () {
1032+ when :
1033+ context. preScmSteps {
1034+ steps {
1035+ shell(' echo HELLO' )
1036+ batchFile(' echo WORLD' )
1037+ }
1038+ failOnError()
1039+ }
1040+
1041+ then :
1042+ with(context. wrapperNodes[0 ]) {
1043+ name() == ' org.jenkinsci.plugins.preSCMbuildstep.PreSCMBuildStepsWrapper'
1044+ children(). size() == 2
1045+ buildSteps[0 ]. children(). size() == 2
1046+ buildSteps[0 ]. children()[0 ]. name() == ' hudson.tasks.Shell'
1047+ buildSteps[0 ]. children()[1 ]. name() == ' hudson.tasks.BatchFile'
1048+ failOnError[0 ]. value() == true
1049+ }
1050+ }
10161051}
You can’t perform that action at this time.
0 commit comments