轻轨线CI构建加速

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

轻轨线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构建加速

1 概述1.1 背景介绍 轻轨线CI构建gradle编译java工程需要预编译解析依赖目录下的所有jar包,在jar包很多的时候构建速度可能会非常慢。1.2...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息