以下内容针对把k8s pod作为agent的jenkins job场景
挂载cache
挂载ccache,gradle
-
k8s集群挂载目录
cache和gradle缓存目录需要在k8s环境的CI集群的node节点中先创建
这个目录可以是gpfs存储也可以是k8s 集群的node的本地目录
当前jenkins 环境已经挂载了一个测试的gpfs目录作为各种缓存目录使用
/gpfs-test/cicd/build_cache -
Jenkins job运行时挂载
在确认k8s环境的CI集群已经有对应的存储目录之后,需要该目录映射到jenkins job的pod中
Job 的pod是每次运行的时候会自动挂载
参考配置
需要设置ccache缓存目录
需要设置gradle缓存目录
/*
下面的配置 是将ci集群中的缓存目录/gpfs-test/cicd 挂载到运行中的prepare容器中使用
volumes 关键字是pod的模板配置的关键字,表示把本地的目录/gpfs-test/cicd 隐射到pod中
作为一个存储资源使用,并且设置了一个名字叫build-cache 这个名字,任何pod中容器都能
使用
volumeMounts 是pod模板中定义docker资源的关键字,表示docker从pod中挂在资源,
下面的例子就是preare这个docker将pod定义的build-cache这个资源挂载到docker内部
并且挂载的目录叫/home/ci-cache,这个目录在docker中读取到的数据就是外面/gpfs-test/cicd
的数据
我们在docker中使用目录的时候,就和在外部是一样的,这里是设置了2个缓存的家目录
ccache /home/ci-cache/build_cache/test/${STAGE_NAME}/.ccache
gradle /home/ci-cache/build_cache/test/${STAGE_NAME}/.gradle
这样在编译的时候就会自动的将依赖数据加载到对应的目录中,下次再次使用的时候就不用下载了
/home/ci-cache/build_cache/ 这个路径是必须要写的路径,后面接的目录可以用项目来区分
例如 /home/ci-cache/build_cache/auto/matrix 这样的
${STAGE_NAME} 这个是pipeline的环境变量表示当前这个stage的名字
一般用在多平台编译的时候区分缓存目录
例如/home/ci-cache/build_cache/auto/matrix/ubuntun
/home/ci-cache/build_cache/auto/matrix/j5
/home/ci-cache/build_cache/auto/matrix/j3
等等
*/
pipeline {
agent {
kubernetes {
label "${
UUID.randomUUID().toString(