searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

使用Job Cacher加速Jenkins构建速度

2024-07-05 09:55:51
29
0

背景介绍

      在使用Jenkins从源码开始构建时,由于需要从远程仓库拉取依赖导致Jenkins构建速度较慢,需要优化Jenkins构建速度。借助Job Cacher能力,将依赖存储到对象存储中,再次部署时直接从对象存储拉取依赖,加速Jenkins构建速度。

Job Cacher插件介绍

      Job Cacher插件是一个作业缓存插件,能够为依赖项和构建制品提供缓存,能够减少构建时长。Job Cacher支持本地S3以及AWS S3三种存储方式,并提供jenkins.plugins.itemstorage.ItemStorage和jenkins.plugins.jobcacher.Cache两个扩展点让用户按需添加自定义缓存和缓存存储方式。安装Job Cacher插件后,可以在jenkinspipelinefree stylejob中使用该插件能力,同时支持自定义缓存缓存大小以使缓存不会无限制增长。

JobCacher缓存参数说明

参数 是否必须 说明
maxCacheSize 允许的最大缓存,单位MB。该参数可以防止缓存无限期增长,设置为零或为空可跳过检查缓存大小。
skipSave 如果设置为 true,则不保存缓存;默认为false。
skipRestore 如果设置为 true,则跳过还原缓存;默认为false。
defaultBranch 如果当前分支没有缓存,它将从指定的分支设定其缓存。不设置可为每个分支生成新的缓存。该选项可用于微调缓存有效性。
caches 定义要使用的缓存。仅支持ArbitraryFileCache,相关参数如下:

ArbitraryFileCache参数说明:

参数 是否必须 说明
path 缓存路径。可以是绝对路径或相对工作空间的相对路劲。
cacheName 缓存名称。通过该名称确保缓存的唯一性。
includes 用于匹配应包含在缓存中的文件。
excludes 用于匹配应从缓存中排除的文件。
useDefaultExcludes 是否使用默认排除项,默认为true
cacheValidityDecidingFile 一个或多个文件的工作区相对路径,应用于确定缓存是否为最新。只会恢复最新的缓存,并且只会创建过时的缓存。
compressionMethod 要使用的压缩方法。支持ZIP、TARGZ、TARGZ_BEST_SPEED、TAR_ZSTD、TAR压缩方法,默认为TARGZ。

使用Job Cacher插件

   在Jenkins上使用Job Cacher插件需要现在Jenkins的插件中心安装该插件,并在Jenkins的全局配置中配置该插件使用的存储方式,然后在Jenkins的pipeline或free style的任务中使用,具体如下:

安装Job Cacher插件

Jenkins的插件管理页面,选择Job Cacher插件并安装。

配置Job Cacher插件

    安装Job Cacher插件后,需要配置Job Cacher插件。以使用S3对象存储为例说明:

在pipeline中使用

    安装并配置好Job Cacher插件后,可以在pipeline中使用该插件,使用方法如下:

cache(maxCacheSize: 250, defaultBranch: 'develop', caches: [
        arbitraryFileCache(path: 'node_modules', cacheValidityDecidingFile: 'package-lock.json')
]) {
    // ...
}

使用效果

      两个图片,第一个是首次使用该插件的情况,第二张是再次使用该插件时的情况。两张图片对比可以清楚看到,第一次构建的时候因为没有从S3对象存储找到对应的缓存需要拉取源码依赖,再次构建的时候直接从S3对象存储拉取缓存,大大加速Jenkins构建速度。

后续展望

   在实际使用过程中,同租户下的应用存在相同依赖的情况,如果让Jenkins的每个任务独享一个缓存,存在缓存空间占据过大的情况,因此需要在该插件的基础上修改,增加参数,让用户按照自己的需求自己定义是否共用同一个缓存。在实际应用中,我们子啊该插件的基础上增加preCachePath参数,实现相同租户下的任务共享同一S3缓存,节省对象存储空间的同时由于缓存最终达到一致,将是否使用缓存归结于租户自定义能力,满足实际使用场景。

0条评论
0 / 1000
方****新
3文章数
0粉丝数
方****新
3 文章 | 0 粉丝
方****新
3文章数
0粉丝数
方****新
3 文章 | 0 粉丝
原创

使用Job Cacher加速Jenkins构建速度

2024-07-05 09:55:51
29
0

背景介绍

      在使用Jenkins从源码开始构建时,由于需要从远程仓库拉取依赖导致Jenkins构建速度较慢,需要优化Jenkins构建速度。借助Job Cacher能力,将依赖存储到对象存储中,再次部署时直接从对象存储拉取依赖,加速Jenkins构建速度。

Job Cacher插件介绍

      Job Cacher插件是一个作业缓存插件,能够为依赖项和构建制品提供缓存,能够减少构建时长。Job Cacher支持本地S3以及AWS S3三种存储方式,并提供jenkins.plugins.itemstorage.ItemStorage和jenkins.plugins.jobcacher.Cache两个扩展点让用户按需添加自定义缓存和缓存存储方式。安装Job Cacher插件后,可以在jenkinspipelinefree stylejob中使用该插件能力,同时支持自定义缓存缓存大小以使缓存不会无限制增长。

JobCacher缓存参数说明

参数 是否必须 说明
maxCacheSize 允许的最大缓存,单位MB。该参数可以防止缓存无限期增长,设置为零或为空可跳过检查缓存大小。
skipSave 如果设置为 true,则不保存缓存;默认为false。
skipRestore 如果设置为 true,则跳过还原缓存;默认为false。
defaultBranch 如果当前分支没有缓存,它将从指定的分支设定其缓存。不设置可为每个分支生成新的缓存。该选项可用于微调缓存有效性。
caches 定义要使用的缓存。仅支持ArbitraryFileCache,相关参数如下:

ArbitraryFileCache参数说明:

参数 是否必须 说明
path 缓存路径。可以是绝对路径或相对工作空间的相对路劲。
cacheName 缓存名称。通过该名称确保缓存的唯一性。
includes 用于匹配应包含在缓存中的文件。
excludes 用于匹配应从缓存中排除的文件。
useDefaultExcludes 是否使用默认排除项,默认为true
cacheValidityDecidingFile 一个或多个文件的工作区相对路径,应用于确定缓存是否为最新。只会恢复最新的缓存,并且只会创建过时的缓存。
compressionMethod 要使用的压缩方法。支持ZIP、TARGZ、TARGZ_BEST_SPEED、TAR_ZSTD、TAR压缩方法,默认为TARGZ。

使用Job Cacher插件

   在Jenkins上使用Job Cacher插件需要现在Jenkins的插件中心安装该插件,并在Jenkins的全局配置中配置该插件使用的存储方式,然后在Jenkins的pipeline或free style的任务中使用,具体如下:

安装Job Cacher插件

Jenkins的插件管理页面,选择Job Cacher插件并安装。

配置Job Cacher插件

    安装Job Cacher插件后,需要配置Job Cacher插件。以使用S3对象存储为例说明:

在pipeline中使用

    安装并配置好Job Cacher插件后,可以在pipeline中使用该插件,使用方法如下:

cache(maxCacheSize: 250, defaultBranch: 'develop', caches: [
        arbitraryFileCache(path: 'node_modules', cacheValidityDecidingFile: 'package-lock.json')
]) {
    // ...
}

使用效果

      两个图片,第一个是首次使用该插件的情况,第二张是再次使用该插件时的情况。两张图片对比可以清楚看到,第一次构建的时候因为没有从S3对象存储找到对应的缓存需要拉取源码依赖,再次构建的时候直接从S3对象存储拉取缓存,大大加速Jenkins构建速度。

后续展望

   在实际使用过程中,同租户下的应用存在相同依赖的情况,如果让Jenkins的每个任务独享一个缓存,存在缓存空间占据过大的情况,因此需要在该插件的基础上修改,增加参数,让用户按照自己的需求自己定义是否共用同一个缓存。在实际应用中,我们子啊该插件的基础上增加preCachePath参数,实现相同租户下的任务共享同一S3缓存,节省对象存储空间的同时由于缓存最终达到一致,将是否使用缓存归结于租户自定义能力,满足实际使用场景。

文章来自个人专栏
个人技术专栏
3 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0