我正在使用docker 容器作为 Jenkins 构建代理。所有构建代理、jenkins 主节点都是在同一主机上运行的 docker 容器。(没有不同的虚拟机)
以下是我用来构建 Angular 应用程序的 Docker 代理模板。
- 这些是带有 sshd 的 Docker 代理。使用环境变量注入公钥。
- 构建代理 docker 映像已安装 npm 和 angular-cli。
詹金斯文件如下。我无法更改 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>