使用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上的同步记录

posted @ 2023-03-02 11:19  第一夫人  阅读(1073)  评论(0编辑  收藏  举报