说明
- 针对老项目,多个模块共用一个git仓库的情况,识别出每次push的变更,只构建对应的模块
- 如果配置多个git地址相同的Jenkins流水线,他们的hook地址也是相同的,无法单独触发其中一个流水线。所以要配置多个镜像仓库。
- 使用原始方式配置最便捷,不使用gitlab、gogs
- 当使用ssh协议对外暴露git时,由于jenkins的bug?,可以手工构建但无法通过hook触发。所以必须再配置httpd服务通过http对外暴露。
git镜像仓库配置
参考文档
https://blog.csdn.net/mxdzchallpp/article/details/80597126
- 使用http协议对外暴露,搭建方式不再赘述
- 为一个仓库配置多个镜像时,可以用
ln -s
软链接方式实现
Jenkins流水线配置
为每个模块配置独立的流水线,使用独立的仓库
自动构建测试:
1
| curl http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-alert
|
Git镜像库同步脚本
使用后台进程while do循环方式,每10秒pull一次
sync.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| #!/bin/sh
GIT_PATH=/dubhe/git/develop BASE_PATH=/dubhe/git/sync-dev SLEEP_SEC=10
while : do echo Git同步开始 `date +"%Y/%m/%d %H:%M:%S"` | tee -a sync.log
cd $GIT_PATH oldsha=`git rev-parse HEAD` git pull git diff --name-only $oldsha | tee -a "$BASE_PATH/sync.dat" "$BASE_PATH/sync.log"
cd $BASE_PATH cat sync.cfg|while read line do module=`echo $line|awk -F ' ' '{print $1}'` hook=`echo $line|awk -F ' ' '{print $2}'` count=`cat sync.dat | grep "$module"|wc -l`
if test $count -gt 0 then echo 触发构建 $module 模块 | tee -a sync.log curl -s $hook >/dev/null fi done
echo Git同步完成 `date +"%Y/%m/%d %H:%M:%S"` | tee -a sync.log > sync.dat echo "" | tee -a sync.log
sleep $SLEEP_SEC done
|
sync.cfg
1 2 3 4 5 6 7 8 9
| efpx-ui http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-ui efpx-upms http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-upms dubhe-metadata http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-metadata dubhe-scheduler http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-scheduler dubhe-data-integration http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-data-integration dubhe-alert http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-alert dubhe-api-generation http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-api-generation dubhe-quality http://10.133.0.186/devops_webhook/git/?url=http://10.193.2.12:8081/git/develop-quality
|
监听钩子(已废弃)
使用nc搭建简易HTTP服务器
因gitlat至镜像服务器的网络不可达,此方案废弃
listen.sh
1 2 3 4 5 6
| while true do cat index.http | nc -l 8082 done
|
index.http
1 2 3 4 5 6
| HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Server: netcat!
<!doctype html> <html><body><h1>开始同步GIT</h1></body></html>
|
测试
1 2
| curl http://10.193.2.12:8082 curl http://10.193.2.12:8083
|