我们为每个工件都有一个构建和部署过程。如果单个构件的构建或部署失败,则不应该停止整个过程。从下游作业获取变量
我们有一个独立的作业用于构建和部署。构建作业可以在从属系统上并行工作,不需要部署。
部署作业应该使用构建作业的结果。我需要以某种方式获取构建的工作区位置,并将其设置为部署作业的参数。我需要放置工作区的地方标有问号。
def branches = [:]
def artifactsToDeploy = []
node{
workspace = pwd()
echo "Workspace:${workspace}"
//read artifact names from file
def appFile=readFile(workspace+"@script/artifacts.txt")
def artifactNames = appFile.tokenize()
//prepare parallel jobs
for (int i=0 ; i < artifactNames.size ; i++) {
def artifactName=artifactNames[i]
branches[artifactName]={
//start build job
def buildResult = build job: 'build-artifact', parameters: [[$class: 'StringParameterValue', name: 'ARTIFACT', value:artifactName],
[$class: 'StringParameterValue', name: 'SVN_TAG', value:SVN_TAG]]
//need to read workspace from a build job, that was running on a slave
artifactsToDeploy[artifactsToDeploy.size]=[artifact:artifactName,workspace:?????]
}
}
echo 'pipeline begin'
stage('build'){
parallel branches
}
stage('deploy'){
//read artifacts from a list and deploy
for (int i=0;i<artifactsToDeploy.size;i++) {
def buildResult = build job: 'deploy-artifact', parameters: [[$class: 'StringParameterValue', name: 'ARTIFACT', value:artifactsToDeploy[i].artifact],
[$class: 'StringParameterValue', name: 'WORKSPACE', value:artifactsToDeploy[i].workspace]]
}
}
echo 'pipeline end'
}