GitHub+webHook实现项目代码自动更新

一、需要的环境和工具

提交端(本地端)

  1. git环境
  2. 项目源码

更新端(服务器)

  1. 服务器
  2. 宝塔面板
  3. 宝塔WebHook插件
  4. 项目运行需要的环境

平台端(GitHub)

  1. 项目GitHub仓库地址

二、获取更新端git公钥

2-1.png

1. 全局设置用户名和邮箱,与GitHub仓库保持一致。

# Git全局配置和单个仓库的用户名邮箱配置
git config --global user.name  "username"
git config --global user.email  "your@email.com"
复制代码

2. 生成git公钥

#生成git公钥用于自动拉取
ssh-keygen -t rsa -C "你的@email.com"
复制代码

3. 查看git公匙

#查看git公钥
cat ~/.ssh/id_rsa.pub
复制代码

4. 复制git公钥

三、GitHub添加git公匙

3-1.png

1. 打开GitHub

2. 点击头像

3. 选择settings

4. 选择SSH and GPG keys

5. 点击New SSh key

6. 添加git公钥

四、配置宝塔的webhook

4-1.png

4-2.png

1. 打开宝塔WebHook插件

2. 设置脚本名

3. 添加如下脚本

4. 只需修改你的仓库地址

5. 其他地方不需要修改

#!/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项目路径($1是param后面的参数,指向你的服务器的目录)
gitPath="/www/wwwroot/$1"
#git 网址 (替换成你的git地址,ssh方式)
gitHttp="git@github.com:你的账户/仓库名.git"
 
echo "Web站点路径:$gitPath"
 
#判断项目路径是否存在
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拉取命令可根据需求自定义)
        #git reset --hard origin/master
        #git pull origin master
        git fetch --all && git reset --hard origin/master && git pull
        #设置目录权限
        chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "该项目路径不存在"
        echo "End"
        exit
fi
复制代码

五、GitHub配置webhook

5-1.png

5-2.png

5-3.png

1. 打开宝塔WebHook插件

2. 点击查看密钥

3. 复制请求地址如下

#webhook请求地址
http://面板地址:面板端口?access_key=密钥&param=你的代码目录地址
复制代码

4. 打开GitHub

5. 进入项目代码仓库

6. 选择settings

7. 选择Webhooks

8. 点击Add Webhooks

9. Payload URL

  1. 放入你复制的webhook请求地址

  2. 要修改param后的参数

  3. 如项目地址是:

  4. /www/wwwroot/项目目录

  5. param=项目目录即可

  6. /www/wwwroot/不需要

10. Content type

选择**application/json**
复制代码

11. Secret

**不填**
复制代码

12. Which events would you like to trigger this webhook?

选择**Just the push event.**
复制代码

13. Active选中

14. 最后点击按钮Add Webhooks

六、在服务器初始化项目

6-1.png

注:首次需要手动拉取部署,以确保后续自动拉取符合要求,并且能够正常执行。

1. 进入项目目录

2. 初始化git 执行

git init
复制代码

3. 连接远程仓库(需要ssh方式)

git remote add origin git@github.com:yourName/repositoryname.git
复制代码

4. 拉取想要的分支代码

git pull origin master
复制代码

5. 根据项目安装所需依赖

#例如:php的composer,node的npm 等
......

复制代码

6. 完成部署

7. 以后每次在本地提交代码

8. 代码在服务端就会自动更新

更多前端内容欢迎关注公众号:天小天个人网

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享