使用gitlab+jenkins实现本地推送到仓库并且自动更新到线上
1、安装好gitlab服务(不详细介绍)
2、安装好jenkins服务(不详细介绍)
gitlab配置
在gitlab上进入要操作的项目,在左边的菜单栏上找到这个配置,【设置-Webhooks】
网址:从jenkins上对应的项目获取
Secret 令牌:从jenkins上对应的项目获取
触发来源:这里我们选择【推送事件】也就是我们常用的push,还可以指定分支名称,默认是主分支master,其他的配置可以根据项目实际情况自行设置。
设置完成,然后保存即可。
jenkins配置
新建项目,输入名称,选择自由风格的项目类型
切换到【源码管理】选项卡,选择Git选项,输入gitlab项目的地址,建好凭证,默认master分支
切换到【构建触发器】选项卡,选择如下图,可以看到这里有个地址,这个地址就是填到gitlab webhook配置里面的地址
点击高级按钮,可以看到【Secret token】这个选项,后面有个生成的按钮,点一下生成Secret 令牌,然后配置到gitlab webhook配置里面的Secret 令牌的地址即可
切换到【构建环境】选项卡,选择【Execute shell】模式,下面输入要执行的脚本路径,语法:sh /data/deploy/h5sdkDeploy.sh 参数,保存即可。
脚本文件内容如下:
#!/bin/sh #-------------------------------------------------- # # 项目部署脚本 # #-------------------------------------------------- #exit; source=$1 function run_rsync(){ #if [ $# != "1" ];then # echo '需要指定同步目录' # exit #fi #echo $source;exit; rsync -avz --exclude="assets" --exclude="runtime" --exclude=".git" /var/lib/jenkins/workspace/项目目录/* nginx@xxx.xxx.xxx.xxx::$source --password-file=/data/deploy/rsync-h5sdk.password }
run_rsync
脚本说明:
1、【/var/lib/jenkins/workspace/项目目录/*】我gitlab仓库所在服务器的项目路径,*号表示项目目录下的全部文件
2、脚本里面的xxx.xxx.xxx.xxx是我线上服务器的IP地址,这里还用到一个rsync的同步服务,下次会写如何配置rsync服务
3、$source就是执行脚本的时候传进来的参数,当然了这个参数也可以写死在脚本里面的
4、【/data/deploy/rsync-h5sdk.password】执行rsync服务的时候,线上服务器的验证密码文件
gitlab上的推送记录
jenkins上的同步记录