您的位置:首页 > 其它

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

2017-09-13 08:41 387 查看

答案

并发

具体实践

并发编译

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


会显示执行脚本的时间,方便评估并发效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  并发 CI jenkins