一、需要的环境和工具
提交端(本地端)
- git环境
- 项目源码
更新端(服务器)
- 服务器
- 宝塔面板
- 宝塔WebHook插件
- 项目运行需要的环境
平台端(GitHub)
- 项目GitHub仓库地址
二、获取更新端git公钥

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公匙

1. 打开GitHub
2. 点击头像
3. 选择settings
4. 选择SSH and GPG keys
5. 点击New SSh key
6. 添加git公钥
四、配置宝塔的webhook


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



1. 打开宝塔WebHook插件
2. 点击查看密钥
3. 复制请求地址如下
#webhook请求地址
http://面板地址:面板端口?access_key=密钥¶m=你的代码目录地址
复制代码
4. 打开GitHub
5. 进入项目代码仓库
6. 选择settings
7. 选择Webhooks
8. 点击Add Webhooks
9. Payload URL
-
放入你复制的webhook请求地址
-
要修改param后的参数
-
如项目地址是:
-
/www/wwwroot/项目目录
-
param=项目目录即可
-
/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
六、在服务器初始化项目

注:首次需要手动拉取部署,以确保后续自动拉取符合要求,并且能够正常执行。
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





















![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)