轻轨线CI构建加速
1 概述
1.1 背景介绍
轻轨线CI构建gradle编译java工程需要预编译解析依赖目录下的所有jar包,在jar包很多的时候构建速度可能会非常慢。
1.2 解决方案
采用复用上次构建的缓存文件的方式来提高构建速度,与本地构建方式一样。
(注:针对轻轨线(CI/CD)v2.8.6之前生成的流水线需要手工配置,v2.8.6及以后的版本已在脚本中解决。)
2 配置指导
1)进入CI流水线,点击“构建补丁包”节点,进入编辑
2)在脚本判断settings.gradle.server上添加脚本如下:
#拷贝上次构建缓存,加速构建
if [ "${USE_BUILD_CACHE}" != "false" ] && [ "${USE_BUILD_CACHE}" != "FALSE" ];then
if [ -d /opt/gradle_cache/${NEXUS_REPO}/${PATCH_PACKAGE_PREFIX_NAME}/${GRADLE_PATH}/.gradle ] && [ -d /opt/gradle_cache/${NEXUS_REPO}/${PATCH_PACKAGE_PREFIX_NAME}/${GRADLE_PATH}/build ];then
echo "last build cache was exists , use it this time!"
/bin/cp -rp /opt/gradle_cache/${NEXUS_REPO}/${PATCH_PACKAGE_PREFIX_NAME}/${GRADLE_PATH}/.gradle /opt/gradle_cache/${NEXUS_REPO}/${PATCH_PACKAGE_PREFIX_NAME}/${GRADLE_PATH}/build ${WORKSPACE}/${GRADLE_PATH}
else
echo "last build cache was not exists , create build cache this time!"
fi
else
echo "no use the build cache , if you want to use it , please configure "USE_BUILD_CACHE=true" in Environment variables"
fi
3)在脚本最后添加如下脚本:
//构建完成的缓存拷贝到公共地方提供给下次构建使用(提速)
// begin for appname
READJSON_text.build.each {
env['APPNAME']=it.app_code
env['IS_BUILD_JAR']=it.is_build_app
// 构建jar包
if ( it.is_build_app == 0 ) {
println "${APPNAME} is_build_app = ${IS_BUILD_JAR}, build jar pass"
} else {
it.projects.each {
env['PROJECTNAME']=it.proj_name
env['GRADLE_PATH']=it.gradle_path
env['GRADLE_CONTENT']=it.gradle_file
if ( it.gradle_path == "") {
println "${APPNAME} ${PROJECTNAME} gradle path is null"
} else {
sh '''
mkdir -p /opt/gradle_cache/${NEXUS_REPO}/${PATCH_PACKAGE_PREFIX_NAME}/${GRADLE_PATH}
/bin/cp -rp ${WORKSPACE}/${GRADLE_PATH}/.gradle /opt/gradle_cache/${NEXUS_REPO}/${PATCH_PACKAGE_PREFIX_NAME}/${GRADLE_PATH}/
/bin/cp -rp ${WORKSPACE}/${GRADLE_PATH}/build /opt/gradle_cache/${NEXUS_REPO}/${PATCH_PACKAGE_PREFIX_NAME}/${GRADLE_PATH}/
'''
}
}
}
}
4)保存脚本
保存后第一次运行由于没有缓存所以会跟之前一样的速度,第二次运行构建有机会使用到缓存就会快,如果还没有提速的话,可能是调度到另外一个jenkins-slave实例上运行了。可以在运行记录中查看对比两次构建是不是在不同的jenkins-slave中运行。
如下图所示:
第一次构建没有走缓存(在jenkins-slave-7cdbcf5d7-xmwc2容器运行),因为第一次还没有生成缓存
第二次构建没有走缓存(在jenkins-slave-7cdbcf5d7-l6fv6容器运行),因为这个容器还没有构建过缓存
第三次构建走缓存了(在jenkins-slave-7cdbcf5d7-l6fv6)
注:重启过Jenkins-slave容器服务后,需要重新生成缓存,因为缓存没有做持久化。
轻轨线CI构建加速
本文2024-09-23 01:09:33发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144144.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf