持续集成的缓存目录

功能介绍

项目本地安装依赖包时,会把下载的文件缓存起来,所以下次安装快很多。比如 npm install 会在项目中生成 ./node_modules,而缓存在 ~/.npm 目录,后者体积更小,更通用。

如果使用「CODING 提供的云主机」进行持续集成构建,每次都会创建新的虚拟服务器,构建完毕即销毁,所以需要指定「缓存目录」保存起来用于加速下次构建。

如果使用「自定义构建节点」进行持续集成构建,构建完毕不会销毁服务器,所以无需指定「缓存目录」。

如果在持续集成中使用 Docker,则需要把「缓存目录」挂载到 Docker 中。

默认环境构建

「默认环境」是 Linux 系统(root 用户),缓存目录如下:

包管理工具 缓存目录
Maven /root/.m2/
Gradle /root/.gradle/
npm /root/.npm/
composer /root/.composer/
pip3 /root/.cache/pip/
yarn /usr/local/share/.cache/yarn/

在持续集成设置中直接勾选对应的「缓存目录」即可,如果缺少也可以自行录入。

CODING 持续集成 缓存目录

Docker 环境构建

如果使用 Docker 环境构建,先勾选「缓存目录」,再挂载到 Docker 中即可(一般为 root 用户)。比如下列 Jenkinsfile 挂载了 npm 缓存:

pipeline {
  agent any
  stages {
    stage('检出') {
      steps {
        checkout([
          $class: 'GitSCM',
          branches: [[name: env.GIT_BUILD_REF]], 
          userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]
        ])
      }
    }
    stage('构建') {
      steps {
        script {
          docker.image('node:12').inside('-v /root/.npm:/root/.npm') {
            sh 'npm install'
          }
        }
      }
    }
  }
}

如果使用「自定义构建节点」,需按照服务器的用户名,比如腾讯云 Ubuntu 服务器的默认用户名为 ubuntu,所以缓存目录为 /home/ubuntu/.npm/,对应的代码为:

docker.image('node:12').inside('-v /home/ubuntu/.npm:/root/.npm') {
  sh 'npm install'
}
上一篇持续集成的环境变量
文档是否对您有用?
感谢反馈有用
感谢反馈没用