我的管道脚本如下所示:
pipeline {
agent {
label 'my-pc'
}
stages {
stage ('Build') {
steps {
build job: 'myjob', parameters: [string(name: 'BRANCH', value: 'master')]
}
post {
always {
sh 'echo TODO: copy artifacts here'
}
}
}
}
}
我想复制 myjob 生成的工件。我怎么能这样做?
Jenkins文档页面"Recording tests and artifacts"有一条不适用于我的管道的指令(在我的例子中,工件由一个单独的作业生成)。
答案 0 :(得分:3)
您可以使用Copy Artifact plugin然后将其与step
步骤一起使用,这样可以像Freestyle作业一样调用构建器或后构建操作。请参阅作业的管道语法并查阅Snippet Generator。 (https://[jenkins-url]/[path-to-your-job]/pipeline-syntax/)
这是将所有工件从作业myjob
复制到当前管道作业工作区的方法:
pipeline {
agent {
label 'my-pc'
}
stages {
stage ('Build') {
steps {
build job: 'myjob', parameters: [string(name: 'BRANCH', value: 'master')]
}
post {
always {
step([
$class: 'CopyArtifact',
filter: '*',
projectName: 'myjob',
selector: [
$class: 'StatusBuildSelector',
stable: false
]])
}
}
}
}
}
答案 1 :(得分:1)
比Travenin和Vadim Kotov上面写的语法更简单。它是在插件的1.39版中引入的。您可以使用以下命令复制上次成功运行myJob
的所有工件:
pipeline {
// pipeline code
steps {
copyArtifacts(filter:'*', projectName: 'myJob', selector: lastSuccessful())
}
// pipeline code
}
此语法适用于脚本管道和声明性管道。在Copy Artifact Plugin Wiki页面上查看copyArtifacts函数的可用参数。