1.在宝塔安装webhook,如下图
2.在宝塔,找到webhook,打开新增webhook。
1)名称随便写(你也不能太随便吧,按项目名来,好辨识)
2)脚本如下(仔细阅读,你能大概读懂,有些注释的)
3)整个脚本复制过去,改下就行。关注gitpath和githttp参数
ps:哪一步走不通就去echo看看日志,或者去相应目录下手动执行相关命令,看看手动行不行,不行就解决错误。
#!/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为运行传入脚本的第一个参数,coding那边配置)
gitPath="/www/wwwroot/xxx/$1"
# git 网址(ssh的地址)
gitHttp=""
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 "拉取最新的项目文件"javascript:;
sudo git reset --hard origin/master
sudo git pull
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
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
3.得到一个密钥,如下图(步骤5需要)
4.来到coding,设置好webhook
路径是:进入项目->项目设置->开发者选项->webhook->新增webhook
5.复制步骤3的密钥过来,param=aaa的aaa为自定义的项目名称,也就是指定宝塔最后的目录名(自己也可以随便写写看看效果)
1)url必填
2)监听事件主要是代码仓库
3)代码仓库要选当前仓库
4)确定即可
6.把项目的ssh或者http地址都行填到步骤2gitHttp的位置
7.部署公钥
1)coding项目下,代码仓库->设置。
2)新增部署公钥
3)找到你宝塔的公钥,方法如下(宝塔的公钥文件可能不叫id_rsa.pub,可能会有个id_bt_rsa.pub啥的就带个bt啥的,把名字强行改回来id_rsa.pub即可,反正就是不要bt。当然私钥也要同步改名)
//到相应目录下
cd ~/.ssh
// ls查看当前目录文件
ls
// 打开公钥文件
cat id_rsa.pub
4)复制到2)中的位置,名字随便取,永久有效,下面推送也点上,确定即可
7.至此,去步骤4中的位置,ping一下,应该能建立出项目了。完成webhook配置
-----------------------------------分割线----------------------------------
更多操作,更自动
1.nuxt或者node用的项目,一般都需要npm,PM2等
1)改写脚本,让其更加自动化构建,增加PM2和npm配置(也可以自行搭配,这里只是个人情况)
#!/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=""
# git 网址
gitHttp=""
# pm2项目名(这里就是填pm2名字,方便重启之前杀掉之前进程)
pmName=""
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 "拉取最新的项目文件"javascript:;
sudo git reset --hard origin/master
sudo git pull
echo "拉取结束End"
#这里是自定义的配置,我这里有yarn和npm去安装包,然后直接删掉应用重启,如果是vue的话
#可以在PM2之前插入npm run build去打包后重启(反正都是自定义了自己看看)
echo "安装node_MODULE"
sudo yarn
sudo npm i
echo "pm2 删除上个应用"
sudo pm2 delete $pmName
echo "pm2启动新应用"
sudo yarn prd
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
echo "设置目录权限"
sudo chown -R www:www $gitPath
echo "End"
exit
fi
2.你可能会发现这个额外操作不起效果?
1)去到你项目的目录下,手动执行
sudo npm i
你会发现的确不行,只要解决了这个问题就ok了
2)解决方法(究其原因就是在/usr/bin/npm目录下没有npm这个包,所以只需建立链接即可)
首先找到npm
which npm
然后ln -s 找到npm的位置 需要建立链接的位置(这个不变)
这里要是遇到什么问题,就在百度下相关错误,都能解决了
sudo ln -s /home/node-v6.9.5-linux-x64/bin/npm /usr/bin/npm
( 只改这个就行 )
3)yarn啊 PM2啊 node啊 一次性都按照1)2)的操作建立链接
4)在ping一次,看看日志,你会发现成功了
5)到这里,舒服了
我是爱学习的leoon,20年毕业。起步一年左右的前端
《个人博客》还没时间去写markdown的发布端,先在这发了哈哈哈哈