Migration - declension/job-dsl-plugin GitHub Wiki

Migrating to 1.30

Jabber Publisher

The publishJabber DSL methods with strategyName and channelNotificationName have been deprecated. Use the methods of the context instead.

DSL prior to 1.30

job {
    publishers {
        publishJabber('[email protected]', 'ANY_FAILURE')
        publishJabber('[email protected]', 'STATECHANGE_ONLY', 'BuildParameters')
    }
}

DSL since 1.30

job {
    publishers {
        publishJabber('[email protected]' {
            strategyName('ANY_FAILURE')
        }
        publishJabber('[email protected]') {
            strategyName('STATECHANGE_ONLY')
            channelNotificationName('BuildParameters')
        }
    }
}

Migrating to 1.29

Build Timeout

The javaposse.jobdsl.dsl.helpers.wrapper.WrapperContext.Timeout enum has been deprecated because it's not used by the DSL anymore.

The failBuild option with a boolean argument has been deprecated.

DSL prior to 1.30

job {
    wrappers {
        buildTimeout() {
            failBuild(true)
        }
    }
}

DSL since 1.30

job {
    wrappers {
        buildTimeout() {
            failBuild()
        }
    }
}

Migrating to 1.29

Grab Support

Support for the @Grab and @Grapes annotation has been deprecated and replaced by the Additional classpath option of the Process Job DSLs build step.

DSL prior to 1.29

@Grab(group='commons-lang', module='commons-lang', version='2.4')

import org.apache.commons.lang.WordUtils

println "Hello ${WordUtils.capitalize('world')}"

DSL since 1.29

import org.apache.commons.lang.WordUtils

println "Hello ${WordUtils.capitalize('world')}"

But to be able to use a library, it has to be added to the Additional classpath option of the Process Job DSLs build step (e.g. lib/commons-lang-2.4.jar or lib/*.jar) and the JAR files have to be in workspace of the seed job (e.g. in a lib directory). See Using Libraries for details.

Per Module Email

The perModuleEmail option has been deprecated because the e-mail notification settings have changed in newer versions of the Maven Project Plugin, see JENKINS-26284.

DSL prior to 1.29

job(type: Maven) {
    perModuleEmail(true)
}

DSL since 1.29

job(type: Maven) {
    configure {
        it / reporters << 'hudson.maven.reporters.MavenMailer' {
            recipients()
            dontNotifyEveryUnstableBuild(false)
            sendToIndividuals(false)
            perModuleEmail(true)
        }
    }
}

Migrating to 1.28

HTML Publisher

The non-closure variants of the report methods in the publishHtml context have been deprecated in favor of a new closure variant.

DSL prior to 1.28

job {
    publishers {
        publishHtml {
            report('build', 'Report Name', 'content.html', true)
            report(reportName: 'Report Name', reportDir: 'build', reportFiles: 'content.html', keepAll: true)
        }
    }
}

DSL since 1.28

job {
    publishers {
        publishHtml {
            report('build') {
                reportName('Report Name')
                reportFiles('content.html')
                keepAll()
            }
        }
    }
}

DSL Method Return Values

Prior to version 1.28 most DSL methods had an undocumented return value. Since 1.28 DSL methods do not return a value except for the methods defined in javaposse.jobdsl.dsl.DslFactory.

Context and ContextHelper

The Context interface and the ContextHelper class have been moved from package javaposse.jobdsl.dsl.helpers to package javaposse.jobdsl.dsl.

Migrating to 1.27

Job Name

The name method variant with a closure parameter in the job closure is deprecated, use the string argument variant instead.

DSL prior to 1.27

job {
    name {
        'foo'
    }
}

DSL since 1.27

job {
    name('foo')
}

Permissions

In version 1.27 undocumented permission methods in the job context have been deprecated. Use the authorization context instead.

DSL prior to 1.27

job {
    permission('hudson.model.Item.Configure:jill')
    permission(Permissions.ItemRead, 'jack')
    permission('RunUpdate', 'joe')
}

DSL since 1.27

job {
    authorization {
        permission('hudson.model.Item.Configure:jill')
        permission(Permissions.ItemRead, 'jack')
        permission('RunUpdate', 'joe')
    }
}

Migrating to 1.26

Archive JUnit Report

In version 1.26 the archiveJunit method with boolean arguments has been deprecated and has been replaced by a closure variant.

DSL prior to 1.26

job {
    publishers {
        archiveJunit('**/target/surefire-reports/*.xml', true, true, true)
    }
}

DSL since 1.26

job {
    publishers {
        archiveJunit('**/target/surefire-reports/*.xml') {
            retainLongStdout()
            testDataPublishers {
                allowClaimingOfFailedTests()
                publishTestAttachments()
            }
        }
    }
}

See the Job Reference for further details.

Xvnc

In version 1.26 the xvnc method with one boolean argument has been deprecated and has been replaced by a closure variant.

DSL prior to 1.26

job {
    wrappers {
        xvnc(true)
    }
}

DSL since 1.26

job {
    wrappers {
        xvnc {
            takeScreenshot()
        }
    }
}

See the Job Reference for further details.

Gerrit Trigger

The usage "short names" in the event closure is deprecated and has been replaced by explicit DSL methods for each event.

DSL prior to 1.26

job {
    triggers {
        gerrit {
            events {
                ChangeAbandoned
                ChangeMerged
                ChangeRestored
                CommentAdded
                DraftPublished
                PatchsetCreated
                RefUpdated
            }
        }
    }
}

DSL since 1.26

job {
    triggers {
        gerrit {
            events {
                changeAbandoned()
                changeMerged()
                changeRestored()
                commentAdded()
                draftPublished()
                patchsetCreated()
                refUpdated()
            }
        }
    }
}

See the Job Reference for further details.

AbstractStepContext

javaposse.jobdsl.dsl.helpers.step.AbstractStepContext has been removed, use javaposse.jobdsl.dsl.helpers.step.StepContext instead.

DSL prior to 1.26

AbstractStepContext.metaClass.myStep = { ... }
}

DSL since 1.26

StepContext.metaClass.myStep = { ... }

Migrating to 1.24

Build Timeout

In version 1.24 the dsl for the build timeout plugin has been modified and the generated xml requires a newer version of the build timeout plugin. The old dsl still works but has been deprecated.

DSL prior to 1.24

timeout(String type) { //type is one of: 'absolute', 'elastic', 'likelyStuck'
    limit 15       // timeout in minutes
    percentage 200 // percentage of runtime to consider a build timed out
}

timeout(35, false)

DSL since 1.24

timeout {
   absolute(15)
   failBuild()
   writeDescription('Build failed due to timeout after {0} minutes')
}

timeout {
    absolute(35)
    failBuild(false)
}

See the Job Reference for further details.

Gerrit Trigger

Before 1.24, the Gerrit trigger configuration used hardwired configuration for unset label configurations (successfulVerified +1, failedVerified -1, everything else 0, these are the default values of the central Gerrit trigger plugin configuration). Now the Gerrit trigger configuration correctly honors central configuration of labels. If you use non-default labels in your central configuration, you might need to change the trigger label configuration of your jobs.

See the Job Reference for further details.

Migrating to 1.20

In version 1.20, some implementation classes have been moved to work around a bug in Groovy. When these classes have been used to extend the DSL, import statements and fully qualified class names have to be adjusted.

Migrating to 1.19

In version 1.19 all build wrapper elements have been moved from the job element to a wrappers sub-element. When upgrading to 1.19 or later, the wrapper elements have to moved as shown below.

DSL prior to 1.19:

job {
    ...
    runOnSameNodeAs 'other', true
    rvm 'ruby-1.9.2-p290'
    timeout 60
    allocatePorts('PORT_A', 'PORT_B')
    sshAgent 'deloy-key'
    ...
}

DSL since 1.19:

job {
    ...
    wrappers {
        runOnSameNodeAs 'other', true
        rvm 'ruby-1.9.2-p290'
        timeout 60
        allocatePorts('PORT_A', 'PORT_B')
        sshAgent 'deloy-key'
    }
    ...
}