我有一个Jenkins管道,其Build步骤有一个archiveArtifacts
命令。
在构建步骤之后,有单元测试,集成测试和部署。
在“部署”步骤中,我想使用其中一个工件。我以为我可以在Build步骤生成它的同一个地方找到它,但显然archiveArtifacts
删除了它们。
作为一种解决方法,我可以在存档之前复制该工件,但它对我来说并不优雅。还有更好的办法吗?
答案 0 :(得分:1)
据我了解,archiveArtifacts更适合在构建完成后保存工件(或某人)使用的工件。我建议使用“stash”和“unstash”来在阶段或节点之间传输文件。
你只是去......
stash include: 'globdescribingfiles', name: 'stashnameusedlatertounstash'
当你想稍后检索那件神器时......
unstash 'stashnameusedlatertounstash'
并将存储的文件放入当前工作目录。
以下是Jenkinsfile文档(https://jenkins.io/doc/book/pipeline/jenkinsfile/#using-multiple-agents)中给出的示例:
pipeline {
agent none
stages {
stage('Build') {
agent any
steps {
checkout scm
sh 'make'
stash includes: '**/target/*.jar', name: 'app'
}
}
stage('Test on Linux') {
agent {
label 'linux'
}
steps {
unstash 'app'
sh 'make check'
}
post {
always {
junit '**/target/*.xml'
}
}
}
stage('Test on Windows') {
agent {
label 'windows'
}
steps {
unstash 'app'
bat 'make check'
}
post {
always {
junit '**/target/*.xml'
}
}
}
}
}