在同一个Jenkins项目中稍后重用工件

时间:2017-05-11 13:08:16

标签: jenkins jenkins-pipeline

我有一个Jenkins管道,其Build步骤有一个archiveArtifacts命令。

在构建步骤之后,有单元测试,集成测试和部署。

在“部署”步骤中,我想使用其中一个工件。我以为我可以在Build步骤生成它的同一个地方找到它,但显然archiveArtifacts删除了它们。

作为一种解决方法,我可以在存档之前复制该工件,但它对我来说并不优雅。还有更好的办法吗?

1 个答案:

答案 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'
                }
            }
        }
    }
}