すべての成果物に対して、ビルドおよびデプロイメントプロセスがあります。単一の成果物のビルドまたはデプロイメントが失敗した場合、プロセス全体を停止してはなりません。ダウンストリームジョブから変数を取得する
私たちはビルドとデプロイのために別々の仕事を持っています。ビルドジョブは、スレーブ上で並行して動作し、展開することはできません。
ビルドジョブの結果は、deployジョブで使用する必要があります。何とかビルドのワークスペースの場所を取得し、それをデプロイジョブのパラメータとして設定する必要があります。ワークスペースを配置する場所に疑問符がついています。
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'
}