首页 > 解决方案 > 使用 docker-container 作为 jenkins 构建代理时,如何在工作区中保留构建目录?

问题描述

我正在使用docker 容器作为 Jenkins 构建代理。所有构建代理、jenkins 主节点都是在同一主机上运行的 docker 容器。(没有不同的虚拟机)

以下是我用来构建 Angular 应用程序的 Docker 代理模板。

码头工人-1

码头工人-2

  1. 这些是带有 sshd 的 Docker 代理。使用环境变量注入公钥。
  2. 构建代理 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)
    }
}
  1. 构建成功运行。我能够得到文物

我在做什么 我将在 docker 模板配置中挂载 .npm 和 node_modules 。(-v)

我想要的是

更快的构建。我想使用 docker 卷挂载选项保留这个工作区目录

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

所以 node_modules 应该是持久的并且构建会更快。如何获取该目录路径并将其放入 docker 代理模板中?

<Path_to_workspace>/<Path_build>

标签: jenkinsjenkins-pluginsjenkins-docker

解决方案


推荐阅读