记一次使用WebHook实现Coding上面的代码自动部署

1. 打开宝塔面板=>软件管理=>下载WebHook

在这里插入图片描述

2.点击设置=>添加Hook

在这里插入图片描述

3.Shell脚本
#!/bin/bash

#输出当前时间
date --date='0 days ago'   "%Y-%m-%d %H:%M:%S"
echo "=====开始====="
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
          echo "param参数错误"
          echo "End"
          exit
fi
echo "$1"
#git项目路径
gitPath="/www/wwwroot/$1"

#git 网址
gitHttp="https://e.coding.net/q-huan/$1.git"
echo "站点路径:$gitPath"

#切换指定用户来执行命令
su - webmaster <<EOF
#判断项目路径是否存在
if [ -d "$gitPath" ]; then
        cd $gitPath
        #判断是否存在git目录
        if [ ! -d ".git" ]; then
                echo "在该目录下克隆 git"
                git clone $gitHttp gittemp
                mv gittemp/.git .
                rm -rf gittemp
        fi
        #拉取最新的项目文件
git fetch --all
git reset --hard origin/master
# git reset --hard
git pull origin master

echo "拉取完成"

echo "当前执行用户"
id

rm -rf composer.lock
composer install
        #设置目录权限
        sudo chown -R webmaster:www $gitPath
        echo "=====结束====="
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi
EOF

此处需要注意:WebHook是以root用户来执行的,在拉取代码(git pull)时遇到问题:拉取的不是最新代码,而是手动拉取的最后一次提交代码;原因权限问题

解决方法 指定具有拉取权限的用户来执行:
👇👇👇👇👇👇👇👇
su - webmaster <<EOF
该用户需要执行的代码
EOF

👉 :上述脚本中使用了sudo chown -R webmaster:www $gitPath 命令,需要先设置 chown命令被当前用户使用sudo执行时不用输入密码.

#编辑 /etc/sudoers 文件
[root@izbp1jbm ~]# vim /etc/sudoers
webmaster       ALL=(ALL)       NOPASSWD:/usr/bin/supervisorctl,/usr/bin/rsync,/usr/bin/chmod,/usr/bin/chown

在这里插入图片描述

4.宝塔WebHook的使用方法在这里插入图片描述
https://宝塔面板域名/hook?access_key={上图中的密码}&param=$1 #$1是项目名称 如:mskj-test
5.进入Coding=>打开要部署的项目=>项目设置=>开发者选项=>WebHook=>新增WebHook

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

上图中URL 为宝塔中获取的WebHook链接;https://宝塔面板域名/hook?access_key={上图中的密钥}&param=$1

6.测试
  • 推送代码可看到发送记录:
    在这里插入图片描述
  • 查看WebHook的日志:
    在这里插入图片描述

在这里插入图片描述

👌,自动部署已完成

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值