2017-05-11 5 views
0

ビルドステップにarchiveArtifactsコマンドがあるJenkinsパイプラインがあります。同じJenkinsプロジェクトの後のアーティファクトを再利用する

ビルドステップの後に、ユニットテスト、統合テスト、および展開があります。

デプロイメントステップでは、アーティファクトの1つを使用します。ビルドステップで生成されたのと同じ場所で見つけることができると思いましたが、明らかにarchiveArtifactsがそれらを削除しました。

回避策として、アーティファクトをアーカイブする前にコピーすることはできますが、私にはエレガントではありません。もっと良い方法はありますか?

答えて

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' 
       } 
      } 
     } 
    } 
} 
関連する問題