2

Jenkins ビルド エージェントとしてdocker コンテナーを使用しています。すべてのビルド エージェント、jenkins マスター ノードは、同じホスト上で実行される Docker コンテナーです。(異なる VM はありません)

以下は、Angular アプリを構築するために使用している Docker Agent テンプレートです。

ドッカー-1

ドッカー-2

  1. これらは、sshd を使用する Docker エージェントです。公開鍵は、env 変数を使用して挿入されます。
  2. build Agent Docker イメージには、npm と angular-cli がインストールされています。

Jenkinsファイルは以下の通りです。Jenkins ファイルを変更できません。したがって、上記のビルド エージェントは、jenkinsfile でノードとしてラベル付けされています。

pipeline {


agent {
    node {
      label 'ng6'
    }

  }
  stages {
    stage('build && SonarQube analysis') {
      steps {
        withSonarQubeEnv('XX SonarQube') {
          sh '''
             npm install
             ts-node git.version.ts
             ng build --prod
             (cd dist ; tar -czf ../xx-ng.tar.gz.)
           '''
         }
      archiveArtifacts(artifacts: 'xx-ng.tar.gz', fingerprint: true)
    }
}
  1. ビルドが正常に実行されます。アーティファクトを取得できます

私がやっている ことは、docker テンプレート構成で .npm と node_modules をマウントします。(-v)

私が欲しいもの

より速いビルド。Docker ボリューム マウント オプションを使用して、このワークスペース ディレクトリを保持したい

/home/jenkins/workspace/xx-ng_master-ZWS24TQFDFQRGZ3QMEVULORQISDY3BPEWLM7KFGJ42I33NOQFULA

そのため、node_modules は永続的であり、ビルドが高速になります。そのディレクトリ パスを取得して docker エージェント テンプレートに入れるにはどうすればよいですか?

<Path_to_workspace>/<Path_build>
4

0 に答える 0