Skip to content

Instantly share code, notes, and snippets.

@Mazorius
Last active May 24, 2020 05:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Mazorius/f00f79def9fa78c8e3b7a10c41720d05 to your computer and use it in GitHub Desktop.
Save Mazorius/f00f79def9fa78c8e3b7a10c41720d05 to your computer and use it in GitHub Desktop.
A GDSL for Jenkins pipelines.
//////////////////////////////////
////// SCRIPT & CLASS SCOPE //////
//////////////////////////////////
final def classContext = context scope: classScope()
final def scriptContext = context scope: scriptScope()
contributor([scriptContext, classContext]) {
property(name: "env", type: 'org.jenkinsci.plugins.workflow.cps.EnvActionImpl')
property(name: "params", type: 'org.jenkinsci.plugins.workflow.cps.EnvActionImpl')
method(name: 'echo', type: 'java.lang.Object', params: [message: 'java.lang.CharSequence'])
method(name: 'error', type: 'java.lang.Object', params: [message: 'java.lang.CharSequence'])
method(name: 'jobDsl', type: 'java.lang.Object', namedParams: [
parameter(name: 'failOnMissingPlugin', type: 'java.lang.Boolean'),
parameter(name: 'failOnSeedCollision', type: 'java.lang.Boolean'),
parameter(name: 'ignoreExisting', type: 'java.lang.Boolean'),
parameter(name: 'ignoreMissingFiles', type: 'java.lang.Boolean'),
parameter(name: 'removedConfigFilesAction', type: 'java.lang.CharSequence'),
parameter(name: 'removedJobAction', type: 'java.lang.CharSequence'),
parameter(name: 'removedViewAction', type: 'java.lang.CharSequence'),
parameter(name: 'sandbox', type: 'java.lang.Boolean'),
parameter(name: 'scriptText', type: 'java.lang.CharSequence'),
parameter(name: 'targets', type: 'java.lang.CharSequence'),
parameter(name: 'unstableOnDeprecation', type: 'java.lang.Boolean'),
])
method(name: 'libraryResource', type: 'java.lang.String', namedParams: [
parameter(name: 'resource', type: 'java.lang.CharSequence'),
parameter(name: 'encoding', type: 'java.lang.CharSequence'),
])
method(name: 'pipeline', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'readYaml', type: 'java.lang.Object', namedParams: [
parameter(name: 'file', type: 'java.lang.CharSequence'),
parameter(name: 'text', type: 'java.lang.CharSequence'),
])
method(name: 'readFile', type: 'java.lang.String', namedParams: [
parameter(name: 'file', type: 'java.lang.CharSequence'),
parameter(name: 'encoding', type: 'java.lang.CharSequence'),
])
method(name: 'fileExists', type: 'java.lang.Boolean', params: [file: 'java.lang.CharSequence'])
method(name: 'fileExists', type: 'java.lang.Boolean', namedParams: [
parameter(name: 'file', type: 'java.lang.CharSequence'),
])
method(name: 'writeFile', type: 'java.lang.String', namedParams: [
parameter(name: 'file', type: 'java.lang.CharSequence'),
parameter(name: 'text', type: 'java.lang.CharSequence'),
parameter(name: 'encoding', type: 'java.lang.CharSequence'),
])
method(name: 'sh', type: 'java.lang.Object', namedParams: [
parameter(name: 'label', type: 'java.lang.CharSequence'),
parameter(name: 'returnStatus', type: 'java.lang.Boolean'),
parameter(name: 'returnStdout', type: 'java.lang.Boolean'),
parameter(name: 'script', type: 'java.lang.CharSequence'),
])
method(name: 'sh', type: 'java.lang.Object', params: [script: 'java.lang.CharSequence'])
method(name: 'timeout', type: 'java.lang.Object', namedParams: [
parameter(name: 'time', type: 'java.lang.Integer'),
parameter(name: 'unit', type: 'java.lang.CharSequence'),
], params: [body: 'groovy.lang.Closure'])
// Credentials Plugin
method(name: 'certificate', type: 'java.lang.Object', namedParams: [
parameter(name: 'aliasVariable', type: 'java.lang.CharSequence'),
parameter(name: 'credentialsId', type: 'java.lang.CharSequence'),
parameter(name: 'keystoreVariable', type: 'java.lang.CharSequence'),
parameter(name: 'passwordVariable', type: 'java.lang.CharSequence'),
])
method(name: 'dockerCert', type: 'java.lang.Object', namedParams: [
parameter(name: 'credentialsId', type: 'java.lang.CharSequence'),
parameter(name: 'variable', type: 'java.lang.CharSequence'),
])
method(name: 'file', type: 'java.lang.Object', namedParams: [
parameter(name: 'credentialsId', type: 'java.lang.CharSequence'),
parameter(name: 'variable', type: 'java.lang.CharSequence'),
])
method(name: 'sshUserPrivateKey', type: 'java.lang.Object', namedParams: [
parameter(name: 'credentialsId', type: 'java.lang.CharSequence'),
parameter(name: 'keyFileVariable', type: 'java.lang.CharSequence'),
parameter(name: 'passphraseVariable', type: 'java.lang.CharSequence'),
parameter(name: 'usernameVariable', type: 'java.lang.CharSequence'),
])
method(name: 'string', type: 'java.lang.Object', namedParams: [
parameter(name: 'credentialsId', type: 'java.lang.CharSequence'),
parameter(name: 'variable', type: 'java.lang.CharSequence'),
])
method(name: 'usernameColonPassword', type: 'java.lang.Object', namedParams: [
parameter(name: 'credentialsId', type: 'java.lang.CharSequence'),
parameter(name: 'variable', type: 'java.lang.CharSequence')
])
method(name: 'usernamePassword', type: 'java.lang.Object', namedParams: [
parameter(name: 'credentialsId', type: 'java.lang.CharSequence'),
parameter(name: 'passwordVariable', type: 'java.lang.CharSequence'),
parameter(name: 'usernameVariable', type: 'java.lang.CharSequence'),
])
method(name: 'withCredentials', type: 'java.lang.Object', params: [
credentials: 'java.util.List<java.lang.Object>',
body : 'groovy.lang.Closure',
])
// Additional unknown declaration via: [$class: 'ZipFileBinding', credentialsId: '', variable: '']
// SSH Agent Plugin
method(name: 'sshagent', type: 'java.lang.Object', params: [
credentials: 'java.util.List<java.lang.CharSequence>',
body : 'groovy.lang.Closure'
])
method(name: 'sshagent', type: 'java.lang.Object', namedParams: [
parameter(name: 'credentials', type: 'java.util.List<java.lang.CharSequence>'),
parameter(name: 'ignoreMissing', type: 'java.lang.Boolean'),
], params: [body: 'groovy.lang.Closure'])
// JUnit Plugin
method(name: 'junit', type: 'java.lang.Object', namedParams: [
parameter(name: 'testResults', type: 'java.lang.CharSequence'),
parameter(name: 'allowEmptyResults', type: 'java.lang.Boolean'),
parameter(name: 'healthScaleFactor', type: 'java.lang.Double'),
parameter(name: 'keepLongStdio', type: 'java.lang.Boolean'),
])
// Sonarqube Plugin
method(name: 'waitForQualityGate', type: 'java.lang.Object', namedParams: [
parameter(name: 'abortPipeline', type: 'java.lang.Boolean')
])
method(name: 'withSonarQubeEnv', type: 'java.lang.Object', params: [
sonarqubeServerName: 'java.lang.CharSequence',
body : 'groovy.lang.Closure',
])
// Dependency Check Plugin
method(name: 'dependencyCheckPublisher', type: 'java.lang.Object', namedParams: [
parameter(name: 'failedNewCritical', type: 'java.lang.Integer'),
parameter(name: 'failedNewHigh', type: 'java.lang.Integer'),
parameter(name: 'failedNewLow', type: 'java.lang.Integer'),
parameter(name: 'failedNewMedium', type: 'java.lang.Integer'),
parameter(name: 'failedTotalCritical', type: 'java.lang.Integer'),
parameter(name: 'failedTotalHigh', type: 'java.lang.Integer'),
parameter(name: 'failedTotalLow', type: 'java.lang.Integer'),
parameter(name: 'failedTotalMedium', type: 'java.lang.Integer'),
parameter(name: 'newThresholdAnalysisExploitable', type: 'java.lang.Boolean'),
parameter(name: 'pattern', type: 'java.lang.CharSequence'),
parameter(name: 'totalThresholdAnalysisExploitable', type: 'java.lang.Boolean'),
parameter(name: 'unstableNewCritical', type: 'java.lang.Integer'),
parameter(name: 'unstableNewHigh', type: 'java.lang.Integer'),
parameter(name: 'unstableNewLow', type: 'java.lang.Integer'),
parameter(name: 'unstableNewMedium', type: 'java.lang.Integer'),
parameter(name: 'unstableTotalCritical', type: 'java.lang.Integer'),
parameter(name: 'unstableTotalHigh', type: 'java.lang.Integer'),
parameter(name: 'unstableTotalLow', type: 'java.lang.Integer'),
parameter(name: 'unstableTotalMedium', type: 'java.lang.Integer'),
])
// Dependency Track Plugin
method(name: 'dependencyTrackPublisher', type: 'java.lang.Object', namedParams: [
parameter(name: 'artifact', type: 'java.lang.CharSequence'),
parameter(name: 'artifactType', type: 'java.lang.CharSequence'),
parameter(name: 'failedNewCritical', type: 'java.lang.Integer'),
parameter(name: 'failedNewHigh', type: 'java.lang.Integer'),
parameter(name: 'failedNewLow', type: 'java.lang.Integer'),
parameter(name: 'failedNewMedium', type: 'java.lang.Integer'),
parameter(name: 'failedTotalCritical', type: 'java.lang.Integer'),
parameter(name: 'failedTotalHigh', type: 'java.lang.Integer'),
parameter(name: 'failedTotalLow', type: 'java.lang.Integer'),
parameter(name: 'failedTotalMedium', type: 'java.lang.Integer'),
parameter(name: 'newThresholdAnalysisExploitable', type: 'java.lang.Boolean'),
parameter(name: 'projectId', type: 'java.lang.CharSequence'),
parameter(name: 'projectName', type: 'java.lang.CharSequence'),
parameter(name: 'projectVersion', type: 'java.lang.CharSequence'),
parameter(name: 'synchronous', type: 'java.lang.Boolean'),
parameter(name: 'totalThresholdAnalysisExploitable', type: 'java.lang.Boolean'),
parameter(name: 'unstableNewCritical', type: 'java.lang.Integer'),
parameter(name: 'unstableNewHigh', type: 'java.lang.Integer'),
parameter(name: 'unstableNewLow', type: 'java.lang.Integer'),
parameter(name: 'unstableNewMedium', type: 'java.lang.Integer'),
parameter(name: 'unstableTotalCritical', type: 'java.lang.Integer'),
parameter(name: 'unstableTotalHigh', type: 'java.lang.Integer'),
parameter(name: 'unstableTotalLow', type: 'java.lang.Integer'),
parameter(name: 'unstableTotalMedium', type: 'java.lang.Integer'),
])
// GitLab Plugin
method(name: 'updateGitlabCommitStatus', type: 'java.lang.Object', namedParams: [
parameter(name: 'name', type: 'java.lang.CharSequence'),
parameter(name: 'state', type: 'java.lang.CharSequence'),
])
// Email Extension Plugin
method(name: 'emailext', type: 'java.lang.Object', namedParams: [
parameter(name: 'attachLog', type: 'java.lang.Boolean'),
parameter(name: 'attachmentsPattern', type: 'java.lang.CharSequence'),
parameter(name: 'body', type: 'java.lang.CharSequence'),
parameter(name: 'from', type: 'java.lang.CharSequence'),
parameter(name: 'mimeType', type: 'java.lang.CharSequence'),
parameter(name: 'postsendScript', type: 'java.lang.CharSequence'),
parameter(name: 'presendScript', type: 'java.lang.CharSequence'),
parameter(name: 'recipientProviders', type: 'java.util.List<Object>'),
parameter(name: 'replyTo', type: 'java.lang.CharSequence'),
parameter(name: 'saveOutput', type: 'java.lang.Boolean'),
parameter(name: 'subject', type: 'java.lang.CharSequence'),
parameter(name: 'to', type: 'java.lang.CharSequence'),
])
method(name: 'culprits', type: 'java.lang.Object')
method(name: 'developers', type: 'java.lang.Object')
method(name: 'brokenTestsSuspects', type: 'java.lang.Object')
method(name: 'brokenBuildSuspects', type: 'java.lang.Object')
method(name: 'recipients', type: 'java.lang.Object')
method(name: 'requestor', type: 'java.lang.Object')
method(name: 'upstreamDevelopers', type: 'java.lang.Object')
// HTML Publisher
method(name: 'publishHTML', type: 'java.lang.Object', params: [target: 'java.util.Map<String, Object>'])
}
///////////////////////////
////// CLOSURE SCOPE //////
///////////////////////////
final def closureContext = context(scope: closureScope())
contributor(closureContext) {
final def pipelineClosure = enclosingCall('pipeline') as Object
if (pipelineClosure) {
method(name: 'agent', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'environment', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'options', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'parameters', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'post', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'stages', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'tools', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'triggers', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
}
final def agentClosure = enclosingCall('agent') as Object
if (agentClosure) {
method(name: 'label', type: 'java.lang.Object', params: [nodeLabel: 'java.lang.CharSequence'])
}
final def triggersClosure = enclosingCall('triggers') as Object
if (triggersClosure) {
method(name: 'cron', type: 'java.lang.Object', params: [cron: 'java.lang.CharSequence'])
method(name: 'gitlab', type: 'java.lang.Object', namedParams: [
parameter(name: 'acceptMergeRequestOnSuccess', type: 'java.lang.Boolean'),
parameter(name: 'addCiMessage', type: 'java.lang.Boolean'),
parameter(name: 'addNoteOnMergeRequest', type: 'java.lang.Boolean'),
parameter(name: 'addVoteOnMergeRequest', type: 'java.lang.Boolean'),
parameter(name: 'branchFilterType', type: 'java.lang.CharSequence'),
parameter(name: 'cancelPendingBuildsOnUpdate', type: 'java.lang.Boolean'),
parameter(name: 'ciSkip', type: 'java.lang.Boolean'),
parameter(name: 'excludeBranchesSpec', type: 'java.lang.CharSequence'),
parameter(name: 'includeBranchesSpec', type: 'java.lang.CharSequence'),
parameter(name: 'noteRegex', type: 'java.lang.CharSequence'),
parameter(name: 'pendingBuildName', type: 'java.lang.CharSequence'),
parameter(name: 'secretToken', type: 'java.lang.CharSequence'),
parameter(name: 'setBuildDescription', type: 'java.lang.Boolean'),
parameter(name: 'skipWorkInProgressMergeRequest', type: 'java.lang.Boolean'),
parameter(name: 'triggerOnMergeRequest', type: 'java.lang.Boolean'),
parameter(name: 'triggerOnNoteRequest', type: 'java.lang.Boolean'),
parameter(name: 'triggerOnPush', type: 'java.lang.Boolean'),
parameter(name: 'triggerOpenMergeRequestOnPush', type: 'java.lang.CharSequence'),
])
}
final def optionsClosure = enclosingCall('options') as Object
if (optionsClosure) {
method(name: 'buildDiscarder', type: 'java.lang.Object', params: [logRotator: 'java.lang.Object'])
method(name: 'checkoutToSubdirectory', type: 'java.lang.Object', params: [subDirectory: 'java.lang.CharSequence'])
method(name: 'disableConcurrentBuilds', type: 'java.lang.Object')
method(name: 'disableResume', type: 'java.lang.Object')
method(name: 'gitLabConnection', type: 'java.lang.Object', params: [gitlabConnectionName: 'java.lang.CharSequence'])
method(name: 'gitlabBuilds', type: 'java.lang.Object', namedParams: [
parameter(name: 'builds', type: 'java.util.List<java.lang.CharSequence>'),
])
method(name: 'logRotator', type: 'java.lang.Object', namedParams: [
parameter(name: 'artifactDaysToKeepStr', type: 'java.lang.CharSequence'),
parameter(name: 'artifactNumToKeepStr', type: 'java.lang.CharSequence'),
parameter(name: 'daysToKeepStr', type: 'java.lang.CharSequence'),
parameter(name: 'numToKeepStr', type: 'java.lang.CharSequence'),
])
method(name: 'newContainerPerStage', type: 'java.lang.Object')
method(name: 'overrideIndexTriggers', type: 'java.lang.Object', params: [isOverride: 'java.lang.Boolean'])
method(name: 'quietPeriod', type: 'java.lang.Object', params: [seconds: 'java.lang.Integer'])
method(name: 'retry', type: 'java.lang.Object', params: [number: 'java.lang.Integer'])
method(name: 'skipDefaultCheckout', type: 'java.lang.Object')
method(name: 'skipStagesAfterUnstable', type: 'java.lang.Object')
method(name: 'timeout', type: 'java.lang.Object', namedParams: [
parameter(name: 'time', type: 'java.lang.Integer'),
parameter(name: 'unit', type: 'java.lang.CharSequence'),
])
method(name: 'timestamps', type: 'java.lang.Object')
}
final def toolsClosure = enclosingCall('tools') as Object
if (toolsClosure) {
method(name: 'git', type: 'java.lang.Object', params: [toolId: 'java.lang.CharSequence'])
method(name: 'gradle', type: 'java.lang.Object', params: [toolId: 'java.lang.CharSequence'])
method(name: 'jdk', type: 'java.lang.Object', params: [toolId: 'java.lang.CharSequence'])
method(name: 'maven', type: 'java.lang.Object', params: [toolId: 'java.lang.CharSequence'])
}
final def environmentClosure = enclosingCall('environment') as Object
if (environmentClosure) {
method(name: 'credentials', type: 'java.lang.Object', params: [credentialsId: 'java.lang.CharSequence'])
}
final def parametersClosure = enclosingCall('parameters') as Object
if (parametersClosure) {
method(name: 'booleanParam', type: 'java.lang.Object', namedParams: [
parameter(name: 'name', type: 'java.lang.CharSequence'),
parameter(name: 'description', type: 'java.lang.CharSequence'),
parameter(name: 'defaultValue', type: 'java.lang.Boolean'),
])
method(name: 'choice', type: 'java.lang.Object', namedParams: [
parameter(name: 'name', type: 'java.lang.CharSequence'),
parameter(name: 'description', type: 'java.lang.CharSequence'),
parameter(name: 'choices', type: 'java.util.List'),
])
method(name: 'password', type: 'java.lang.Object', namedParams: [
parameter(name: 'name', type: 'java.lang.CharSequence'),
parameter(name: 'description', type: 'java.lang.CharSequence'),
parameter(name: 'defaultValue', type: 'java.lang.CharSequence'),
])
method(name: 'string', type: 'java.lang.Object', namedParams: [
parameter(name: 'name', type: 'java.lang.CharSequence'),
parameter(name: 'description', type: 'java.lang.CharSequence'),
parameter(name: 'defaultValue', type: 'java.lang.CharSequence'),
])
method(name: 'text', type: 'java.lang.Object', namedParams: [
parameter(name: 'name', type: 'java.lang.CharSequence'),
parameter(name: 'description', type: 'java.lang.CharSequence'),
parameter(name: 'defaultValue', type: 'java.lang.CharSequence'),
])
}
final def stagesClosure = enclosingCall('stages') as Object
if (stagesClosure) {
method(name: 'agent', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'input', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'parallel', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'post', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'stage', type: 'java.lang.Object', params: [
name: 'java.lang.CharSequence',
body: 'groovy.lang.Closure',
])
}
final def stageClosure = enclosingCall('stage') as Object
if (stageClosure) {
method(name: 'environment', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'steps', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'when', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
}
final def whenClosure = enclosingCall('when') as Object
if (whenClosure) {
method(name: 'allOf', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'anyOf', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'branch', type: 'java.lang.Object', namedParams: [
parameter(name: 'comparator', type: 'java.lang.CharSequence'),
parameter(name: 'pattern', type: 'java.lang.CharSequence'),
])
// comparator can be: EQUALS, GLOB or REGEXP
method(name: 'branch', type: 'java.lang.Object', params: [branchName: 'java.lang.CharSequence'])
method(name: 'buildingTag', type: 'java.lang.Object')
method(name: 'changelog', type: 'java.lang.Object', params: [regExp: 'java.lang.CharSequence'])
method(name: 'changeRequest', type: 'java.lang.Object')
method(name: 'changeset', type: 'java.lang.Object', namedParams: [
parameter(name: 'caseSensitive', type: 'java.lang.Boolean'),
parameter(name: 'comparator', type: 'java.lang.CharSequence'),
parameter(name: 'pattern', type: 'java.lang.CharSequence'),
])
// comparator can be: EQUALS, GLOB or REGEXP
method(name: 'changeset', type: 'java.lang.Object', params: [fileGlob: 'java.lang.CharSequence'])
method(name: 'environment', type: 'java.lang.Object', namedParams: [
parameter(name: 'name', type: 'java.lang.CharSequence'),
parameter(name: 'value', type: 'java.lang.CharSequence'),
])
method(name: 'equals', type: 'java.lang.Object', namedParams: [
parameter(name: 'actual', type: 'java.lang.CharSequence'),
parameter(name: 'expected', type: 'java.lang.CharSequence'),
])
method(name: 'expression', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'not', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'tag', type: 'java.lang.Object', namedParams: [
parameter(name: 'comparator', type: 'java.lang.CharSequence'),
parameter(name: 'pattern', type: 'java.lang.CharSequence'),
])
// comparator can be: EQUALS, GLOB or REGEXP
method(name: 'tag', type: 'java.lang.Object', params: [branchName: 'java.lang.CharSequence'])
method(name: 'triggeredBy', type: 'java.lang.Object', namedParams: [
parameter(name: 'cause', type: 'java.lang.CharSequence'),
parameter(name: 'detail', type: 'java.lang.CharSequence'),
])
method(name: 'triggeredBy', type: 'java.lang.Object', params: [branchName: 'java.lang.CharSequence'])
}
final def stepsClosure = enclosingCall('steps') as Object
final def abortedClosure = enclosingCall('aborted') as Object
final def alwaysClosure = enclosingCall('always') as Object
final def changedClosure = enclosingCall('changed') as Object
final def cleanupClosure = enclosingCall('cleanup') as Object
final def failureClosure = enclosingCall('failure') as Object
final def fixedClosure = enclosingCall('fixed') as Object
final def regressionClosure = enclosingCall('regression') as Object
final def successClosure = enclosingCall('success') as Object
final def unstableClosure = enclosingCall('unstable') as Object
final def unsuccessfulClosure = enclosingCall('unsuccessful') as Object
if (stepsClosure
|| abortedClosure
|| alwaysClosure
|| changedClosure
|| cleanupClosure
|| failureClosure
|| fixedClosure
|| regressionClosure
|| successClosure
|| unstableClosure
|| unsuccessfulClosure
) {
method(name: 'script', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
}
final def postClosure = enclosingCall('post') as Object
if (postClosure) {
method(name: 'aborted', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'always', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'changed', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'cleanup', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'failure', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'fixed', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'regression', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'success', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'unstable', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
method(name: 'unsuccessful', type: 'java.lang.Object', params: [body: 'groovy.lang.Closure'])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment