Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JENKINS-66189 Use dynamic DSL instead of outdated PostBuildScript syntax #1240

Merged
merged 2 commits into from Jul 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view

This file was deleted.

This file was deleted.

Expand Up @@ -9,7 +9,6 @@ import javaposse.jobdsl.dsl.Preconditions
import javaposse.jobdsl.dsl.RequiresPlugin
import javaposse.jobdsl.dsl.AbstractExtensibleContext
import javaposse.jobdsl.dsl.helpers.common.PublishOverSshContext
import javaposse.jobdsl.dsl.jobs.MatrixJob

import static javaposse.jobdsl.dsl.ContextHelper.toNamedNode
import static javaposse.jobdsl.dsl.Preconditions.checkArgument
Expand Down Expand Up @@ -1287,27 +1286,6 @@ class PublisherContext extends AbstractExtensibleContext {
}
}

/**
* Execute a set of scripts at the end of the build.
*
* @since 1.31
*/
@RequiresPlugin(id = 'postbuildscript', minimumVersion = '0.17')
void postBuildScripts(@DslContext(PostBuildScriptsContext) Closure closure) {
PostBuildScriptsContext context = new PostBuildScriptsContext(jobManagement, item)
ContextHelper.executeInContext(closure, context)

publisherNodes << new NodeBuilder().'org.jenkinsci.plugins.postbuildscript.PostBuildScript' {
buildSteps(context.stepContext.stepNodes)
scriptOnlyIfSuccess(context.onlyIfBuildSucceeds)
scriptOnlyIfFailure(context.onlyIfBuildFails)
markBuildUnstable(context.markBuildUnstable)
if (item instanceof MatrixJob) {
executeOn(context.executeOn)
}
}
}

/**
* Triggers SonarQube analysis.
*
Expand Down
Expand Up @@ -3527,105 +3527,6 @@ class PublisherContextSpec extends Specification {
e.message =~ 'can only be using in matrix jobs'
}

def 'call post build scripts with minimal options'() {
when:
context.postBuildScripts {
}

then:
with(context.publisherNodes[0]) {
name() == 'org.jenkinsci.plugins.postbuildscript.PostBuildScript'
children().size() == 4
buildSteps[0].children().size == 0
scriptOnlyIfSuccess[0].value() == true
scriptOnlyIfFailure[0].value() == false
markBuildUnstable[0].value() == false
}
1 * jobManagement.requireMinimumPluginVersion('postbuildscript', '0.17')
}

def 'call post build scripts with all options'() {
when:
context.postBuildScripts {
steps {
shell('echo TEST')
}
onlyIfBuildSucceeds(value)
onlyIfBuildFails(value)
markBuildUnstable(value)
}

then:
with(context.publisherNodes[0]) {
name() == 'org.jenkinsci.plugins.postbuildscript.PostBuildScript'
children().size() == 4
buildSteps[0].children().size == 1
buildSteps[0].children()[0].name() == 'hudson.tasks.Shell'
scriptOnlyIfSuccess[0].value() == value
scriptOnlyIfFailure[0].value() == value
markBuildUnstable[0].value() == value
}
1 * jobManagement.requireMinimumPluginVersion('postbuildscript', '0.17')

where:
value << [true, false]
}

def 'call post build scripts with minimal options and matrix job'() {
setup:
Item item = new MatrixJob(jobManagement, 'test')
PublisherContext context = new PublisherContext(jobManagement, item)

when:
context.postBuildScripts {
}

then:
with(context.publisherNodes[0]) {
name() == 'org.jenkinsci.plugins.postbuildscript.PostBuildScript'
children().size() == 5
buildSteps[0].children().size == 0
scriptOnlyIfSuccess[0].value() == true
scriptOnlyIfFailure[0].value() == false
markBuildUnstable[0].value() == false
executeOn[0].value() == 'BOTH'
}
1 * jobManagement.requireMinimumPluginVersion('postbuildscript', '0.17')
}

def 'call post build scripts with all options and matrix job'() {
setup:
Item item = new MatrixJob(jobManagement, 'test')
PublisherContext context = new PublisherContext(jobManagement, item)

when:
context.postBuildScripts {
steps {
shell('echo TEST')
}
onlyIfBuildSucceeds(false)
onlyIfBuildFails()
markBuildUnstable()
executeOn(mode)
}

then:
with(context.publisherNodes[0]) {
name() == 'org.jenkinsci.plugins.postbuildscript.PostBuildScript'
children().size() == 5
buildSteps[0].children().size == 1
buildSteps[0].children()[0].name() == 'hudson.tasks.Shell'
scriptOnlyIfSuccess[0].value() == false
scriptOnlyIfFailure[0].value() == true
markBuildUnstable[0].value() == true
executeOn[0].value() == mode
}
1 * jobManagement.requireMinimumPluginVersion('postbuildscript', '0.17')

where:
mode << ['MATRIX', 'AXES', 'BOTH']
}

def 'call sonar with no options'() {
when:
context.sonar()
Expand Down