Reputation: 396
We've just moved from using the buildflow plugin to pipeline as buildflow was deprecated & the recommendation was to move onto pipeline when possible.
Our previous build flow looked like this:
def rioBranchName = params["rioBranch"]
def restBranchName = params["restBranch"]
def deployServer = params["deploymentServer"]
def tagNumber = build.number
def automationBuild
build( "Restart Tomcat", deploymentServers: deployServer)
parallel (
{ build( "Rio", branch: rioBranchName, deploymentServer: deployServer, extraTasks:"multiReDeploy", gradleSwitches: "--settings-file packageSettings.gradle") },
{ build( "REST - Smoke Tests", branch: restBranchName, deploymentServer: deployServer, extraTasks:"multiReDeploy") },
{ automationBuild = build( "Rio Automation", branch: rioBranchName) }
)
build("Restart Tomcat", deploymentServers: deployServer)
build("SCTM Trigger - Develop - Smoke", , automationTestBuildNumber: automationBuild.build.number)
and I've tried to convert this into a pipeline flow.
def automationBuild
pipeline {
agent any
stages {
stage('Build'){
steps {
parallel buildAtlas: {
build job: 'Rio', parameters: [string(name: 'branch', value: params["rioBranch"])]
}, buildRest: {
build job: 'REST - Smoke Tests', parameters: [string(name: 'branch', params["restBranch"])]
}, buildAutomation: {
automationBuild = build job: 'Rio Automation', parameters: [string(name: 'branch', value: params["rioBranch"])]
},
failFast: false
}
}
stage('Test commit'){
steps {
build job: 'Restart Tomcat', parameters: [string(name: 'deploymentServers', value: params["deploymentServer"])]
build job: 'SCTM Trigger - Develop - Smoke', parameters: [string(name: 'automationTestBuildNumber', value: automationBuild.build.number)]
}
}
}
}
I consistently get the error.
WorkflowScript: 11: Expected a step @ line 11, column 6.
def automationBuild = build job: 'Rio Automation', parameters: [string(name: 'branch', value: params["rioBranch"])]
What is the new correct way to get the version number of the build RioAutomation that was just triggered.
Upvotes: 2
Views: 1622
Reputation: 14037
You need to wrap the non-step assignment instruction in a script
block to get it to lint/validate clean:
def rioBranchName = params["rioBranch"]
def restBranchName = params["restBranch"]
def deployServer = params["deploymentServer"]
def tagNumber = build.number
def automationBuild
build( "Restart Tomcat", deploymentServers: deployServer)
parallel (
{ build( "Rio", branch: rioBranchName, deploymentServer: deployServer, extraTasks:"multiReDeploy", gradleSwitches: "--settings-file packageSettings.gradle") },
{ build( "REST - Smoke Tests", branch: restBranchName, deploymentServer: deployServer, extraTasks:"multiReDeploy") },
{
script {
automationBuild = build( "Rio Automation", branch: rioBranchName)
}
}
)
build("Restart Tomcat", deploymentServers: deployServer)
build("SCTM Trigger - Develop - Smoke", , automationTestBuildNumber: automationBuild.build.number)
Note that script
let's your run pretty much any groovy code you can run in a scripted pipeline inside a declarative pipeline step.
Upvotes: 4