Jenkins 管道詹金斯,什么';这是使用变量的正确方法
我们刚刚从使用buildflow插件转向管道,因为buildflow已被弃用&建议在可能的情况下转向管道 我们以前的构建流程如下所示:Jenkins 管道詹金斯,什么';这是使用变量的正确方法,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我们刚刚从使用buildflow插件转向管道,因为buildflow已被弃用&建议在可能的情况下转向管道 我们以前的构建流程如下所示: def rioBranchName = params["rioBranch"] def restBranchName = params["restBranch"] def deployServer = params["deploymentServer"] def tagNumber = build.number def automationBuild bui
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)
我试着把它转换成管道流
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)]
}
}
}
}
我总是犯错误
WorkflowScript: 11: Expected a step @ line 11, column 6.
def automationBuild = build job: 'Rio Automation', parameters: [string(name: 'branch', value: params["rioBranch"])]
获取刚刚触发的生成自动化版本号的正确新方法是什么。您需要将非步骤分配指令包装在
脚本
块中,以将其清除:
请注意,
script
让我们运行几乎所有可以在声明性管道步骤内的脚本管道中运行的groovy代码。尝试将其包装为一个steps{…}
添加的buildAutomation:{steps{automationBuild=build作业:'Rio Automation',parameters:[string](名称:'branch',值:params[“rioBranch”])]},
&得到了相同的错误,这是您的意思吗?是的。如果您在管道{}中声明自动生成
,该怎么办
您可以发布生成的管道文件的外观吗?这里是这些更改的粘贴箱。它仍会引发类似的错误&另一个.org.codehaus.groovy.control.multipleCompositionErrorException:启动失败:工作流脚本:2:不是有效的节定义:“def automationBuild”。需要一些额外的配置。@第2行第5列。def automationBuild ^WorkflowScript:13:在第13行第10列需要一个步骤。automationBuild=生成作业:“Rio Automation”,参数:[字符串(名称:“branch”,值:params[“rioBranch”])]这让我走上了正确的轨道…脚本允许我运行设置变量的构建。正如您所说的,它允许您运行几乎所有groovy代码。我现在接受这一点&明天将添加使其完全工作所需的额外逻辑。
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)