Jenkins ビルド エージェントとしてdocker コンテナーを使用しています。すべてのビルド エージェント、jenkins マスター ノードは、同じホスト上で実行される Docker コンテナーです。(異なる VM はありません)
以下は、Angular アプリを構築するために使用している Docker Agent テンプレートです。
- これらは、sshd を使用する Docker エージェントです。公開鍵は、env 変数を使用して挿入されます。
- 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)
}
}
- ビルドが正常に実行されます。アーティファクトを取得できます
私がやっている ことは、docker テンプレート構成で .npm と node_modules をマウントします。(-v)
私が欲しいもの
より速いビルド。Docker ボリューム マウント オプションを使用して、このワークスペース ディレクトリを保持したい
/home/jenkins/workspace/xx-ng_master-ZWS24TQFDFQRGZ3QMEVULORQISDY3BPEWLM7KFGJ42I33NOQFULA
そのため、node_modules は永続的であり、ビルドが高速になります。そのディレクトリ パスを取得して docker エージェント テンプレートに入れるにはどうすればよいですか?
<Path_to_workspace>/<Path_build>