我有一个单独的build
管道,该管道使用jenkinsfile
来构建代码。
我从deploy
管道触发它,并希望获得构建结果。
之所以这样做,是因为开发人员可以定义构建步骤,但部署不受控制。
这是jenkins job builder
中的示例代码:
- job:
name: Build and Deploy
project-type: pipeline
dsl: |
node {
stage('Build') {
# that job does stash inside a jenkinsfile
build job: "Build"
sh 'cp -rv "../Build/dist/" ./' # this is a workaround
stash includes: 'dist/*.zip', name: 'archive'
}
stage('Deploy') {
unstash 'archive'
sh "..."
}
}
那我怎么unstash
在子工作中对stash
进行编码?
P.S .:还有一种人工制品的解决方法:
在子工作中:
archiveArtifacts artifacts: '*.zip', fingerprint: true
主DSL:
dsl: |
node {
def build_job_number = 0
def JENKINS = "http://127.0.0.1:8080"
stage('Build') {
def build_job = build job: "Build"
build_job_number = build_job.getNumber()
}
stage('Deploy') {
sh "wget -c --http-user=${USER} --http-password=${TOKEN} --auth-no-challenge ${JENKINS}/job/Build/${build_job_number}/artifact/name.zip"
sh "..."
}
}
这里的问题是需要API令牌。
答案 0 :(得分:0)
如果您选择archiveArtifacts
,则可以使用copyArtifacts
对其进行补充。
据我所知stash
/ unstash
仅在同一作业中工作,因此您的另一种选择是在管道的配置中打勾Preserve stashes from completed builds
,以便您可以重复使用他们。