本地部署git环境以及配置webhook,实现本地更新代码 云服务器上自动同步代码

1.部署环境配置

          宝塔 + 云服务器 + gitlab + webhook

           其中 gitlab 和 webhook 使用宝塔进行一键安装

2. 主要说明使用webhook遇到的问题以及怎么进行调试

本地部署git环境以及配置webhook,实现本地更新代码 云服务器上自动同步代码_第1张图片

 

执行脚本的代码如下,

1.当第一次使用以下脚本无法创建代码仓库的时候,可以使用 宝塔自带的控制塔先设置git的一些参数如下,进行 git clone http://192.168.0.0/ll/book.git 等操作先保证可以正常使用git功能

本地部署git环境以及配置webhook,实现本地更新代码 云服务器上自动同步代码_第2张图片

2. gitlab上配置当产生 push事件的时候使用这个函数钩子

本地部署git环境以及配置webhook,实现本地更新代码 云服务器上自动同步代码_第3张图片

3. 以上就完成了本地push代码的时候,云服务器上自动提交代码

4. webhook不能按照正常预期 自动 git pull代码的问题排查以及修复

   如下代码中的

sudo git pull $gitHttp  2>&1   其中2>$1是指将git过程的信息进行输出 ($0表示标准输入,$1表示标准输出,$2输出到文件中)

本地部署git环境以及配置webhook,实现本地更新代码 云服务器上自动同步代码_第4张图片

 

#!/bin/bash
 

echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "Start"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then 
          echo "param参数错误"
          echo "End"
          exit
fi
#git项目路径
gitPath="/www/wwwroot/gitRoot/$1"
#git 网址
gitHttp="http://192.168.2.20/llh/book.git" //自己仓库的链接
#gitHttp="http://192.168.2.20/llh/$1.git" //多仓库的时候
echo "Web站点路径:$gitPath"
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                sudo git clone $gitHttp gittemp 
                sudo mv gittemp/.git .
                sudo rm -rf gittemp
        fi
        echo "拉取最新的项目文件"
        #sudo git reset --hard origin/master
		git remote add origin $gitHttp
		git branch --set-upstream-to=origin/master master
        sudo git reset --hard origin/master
        sudo git pull $gitHttp  2>&1  
        echo "设置目录权限"
        sudo chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
                echo "新建项目目录"
        mkdir $gitPath
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                sudo git clone $gitHttp gittemp
                sudo mv gittemp/.git .
                sudo rm -rf gittemp
        fi
        echo "拉取最新的项目文件"
        #sudo git reset --hard origin/master
        sudo git pull gitHttp 2>&1
        echo "设置目录权限"
        sudo chown -R www:www $gitPath
        echo "End"
        exit
fi

本地部署git环境以及配置webhook,实现本地更新代码 云服务器上自动同步代码_第5张图片

 

你可能感兴趣的:(随手记,gitlab,webhook)