提高CI运行速度的简单方法

答案

并发

具体实践

并发编译

make的操作,加入-j,编译速度会非常快!
-s是安静的意思,只打印告警信息,这样也能微弱加速。
make -sj

注意,除了编译代码,在测试和代码检查中,凡是会用到make的,都可以加速-j,会有效果

并发shell

看过很多人的脚本,都是一个个测试用例在编译,伪码如下:

for i in xx; do
    compile yy
done

实际上,这是一个串联操作,测试用例是不需要串行的。
采用& 和 wait来实现并发

for i in xx; do
    compile yy &
done
wait

这样,各个测试用例就可以并发编译了。
它的意思是:
每个compile yy都变成后台运行进程,这样就可以立马执行下一个任务。
wait是会等待所有的后台进程全部完成后,才会继续。

这里只是拿测试用例进行举例,该思想应用面很广

并发CI

这里以CI pipeline为例。
pipeline是支持parallel并发模式的。
在一个stage内部,可以实现两种并发,parallel是可以嵌套的
- node的并发
- node内部的不同任务的并发
Jenkinsfile示例如下:

#!groovy
stage ('check')
{
    parallel (
        "fortify": {
            node("JenkinsServer"){
                checkout scm
                sh "xxxx"

            }
        },
        "lightweigh_check": {
            node("mesos"){
                    checkout scm
                    parallel(
                        "doxygen": {
                            sh 'cd ${SRC_PATH} && make doc 1>/dev/null 2>${WORKSPACE}/makedoc.warning \
                            && cat ${WORKSPACE}/makedoc.warning \
                            && if test -s ${WORKSPACE}/makedoc.warning; then exit 1; else exit 0; fi'
                        },

                        //ccn check
                        "ccn average": {
                            sh 'lizard ${SRC_PATH} --xml > ${WORKSPACE}/ccn.xml'
                            sh 'python ${SCRIPT}/check/ccn_average.py'
                        }
                    )
                }
            }
        )
}

其他好工具

time

运行脚本时,用time执行
time xxx.sh
会显示执行脚本的时间,方便评估并发效果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值