web-dev-qa-db-ja.com

stash \ unstashの別のディレクトリへの正しい使用法

私のステージの1つでは、ビルドが完了した後、2つのフォルダーの内容をコピーし、別のディレクトリーにコピーする必要があります。

私は実際にフリースタイルジョブをパイプラインに変換しており、アーティファクトデプロイヤプラグインを使用しています。読んでみると、stashコマンドとunstashコマンドは、私が達成したいことを支援するはずです。

これが正しいアプローチであるかどうかを誰かが確認できますか?

_stage('Build') {
      steps {
        sh '''
          gulp set-staging-node-env
          gulp prepare-staging-files
          gulp webpack
        '''
        stash includes: '/dist/**/*', name: 'builtSources'
        stash includes: '/config/**/*', name: 'appConfig'
        dir('/some-dir') {
          unstash 'builtSources'
          unstash 'appConfig'
        }
      }
    }
_

ある段階でdirを変更した場合、それ以降のすべての段階はそのディレクトリからコマンドを実行しようとしますか、それともワークスペースのデフォルトの場所を使用することになりますか?

ありがとう

[〜#〜] edit [〜#〜]

私が実際にやりたいのは、ビルドされたソースを別のノードにコピーすることです(別のOSを実行)。そのため、スニペットで、ディレクトリを切り替える場所を共有しました。そのディレクトリは、実際にはセットアップした別のマシン(ノード)上にあります。

dir()ブロックをnode('my-node-name')ブロックでラップする必要がありますか?例を見つけるのに苦労しています。

ありがとう

15
mindparse

私はそれがこれであることを意図していることを願っています:

_stash includes: 'dist/**/*', name: 'builtSources'

stash includes: 'config/**/*', name: 'appConfig'
_

ここで、distとconfigはワークスペースパスのディレクトリなので、上記のような相対パスにする必要があります。

パス "/ some-dir"がjenkinsユーザー(jenkinsデーモンの実行に使用されるユーザー)によって書き込み可能である必要があることに言及するだけで、残りは大丈夫のようです。

そして、はい、それは、dirブロックを出るときに、そのワークスペースパス(この場合はデフォルト)にフォールバックします。

[〜#〜] edit [〜#〜]

そのため、パスをスタッシュすると、パイプラインの任意のステップでスタッシュを解除できます。そのため、node('<nodename>')ブロックの下にdirブロックを配置できます。

次のようなものを追加できます。

_stage('Move the Build'){
  node('datahouse'){
    dir('/opt/jenkins_artifacts'){
      unstash 'builtSources'
      unstash 'appConfig'
    }
  }
}
_
21
rusia.inc