我們爲每個工件都有一個構建和部署過程。如果單個構件的構建或部署失敗,則不應該停止整個過程。從下游作業獲取變量
我們有一個獨立的作業用於構建和部署。構建作業可以在從屬系統上並行工作,不需要部署。
部署作業應該使用構建作業的結果。我需要以某種方式獲取構建的工作區位置,並將其設置爲部署作業的參數。我需要放置工作區的地方標有問號。
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'
}