emmmm,这其实是一个很简单的一件事情,但是有很多坑,记录一下

先大概讲一下原理吧,就是每次您 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 更多说明 »

然后在宝塔这边执行你写的shell脚本,执行 git pull 的操作,好的,话不多说,开整

1、首先你需要在宝塔的软件商店里下载Webhook,说明也说的很清楚了,可设置回调脚本

这个作用很多,不仅限于自动拉取仓库代码。。。其他的自己去发掘吧。

2、安装好之后,点击添加,然后就可以写名称和脚本了

3、这里我写的是git pull 的脚本,至于写其他的我就不赘述了,操作都一样,只不过脚本不同而已

#!/bin/bash
echo ""
#输出当前时间
date --date='0 days ago' "+%Y-%m-%d %H:%M:%S"
echo "-------开始-------"
#判断宝塔WebHook参数是否存在
if [ ! -n "$1" ];
then
echo "param参数错误"
echo "End"
exit
fi
#服务器 git 项目路径
gitPath="/www/wwwroot/$1"
#码云项目 git 网址
gitHttp="git@gitee.com:XXXXX/$1.git" echo "路径:$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 reset --hard origin/master
#git clean -f
git pull origin master
echo "拉取完成"
#执行npm
#执行编译
#npm run build
#设置目录权限
chown -R www:www $gitPath
echo "-------结束--------"
exit
else
echo "该项目路径不存在"
echo "End"
exit
fi

这里可以先不用放在webhook里,可以单独执行一下脚本试试,至于为什么,我们等下再说。

4、现在设置好了,我们点击查看密匙

5、使用方法已经说的很清楚了,param=test,为什么这样写,因为脚本里我们使用了变量$1,你可以在脚本里把地址写死,这样这个param的值就随便你写了

但是请求的时候还是需要带上这个参数,因为我们脚本里判断了参数是否存在

#请求的地址
http://你面板的地址(端口号也需要带上)/hook?access_key=这里填写你的密匙,直接复制过来&param=这里带上参数,参数是你项目的名称

6、然后我们跳到码云,找到你的仓库,点击管理,然后找到WebHooks

7、添加WebHook,url就填写宝塔里那个链接,密码可以不用写,这里我就选择Push事件,如果有特殊需求就自己看着办吧

8、添加好之后你就可以点击测试,如果链接正常,请求成功的话会返回这样

9、返回宝塔,查看Webhook日志,如果跟下图一样,那就没毛病。本地 git push 服务器执行脚本自动拉取,然后你就可以愉快的写代码了。

10、上面说到了不配置,单独执行一下脚本试试,原因是我昨天搞的时候一切正常,拉也能拉下来,但是版本不对

始终只能拉到一个固定的版本,git pull  在本地终端里面执行就可以拉取新的  但在宝塔脚本里面,总是本地执行后的那次,永远不变。

始终没有找到解决办法,无奈最后只能放弃这个方法。。。,今天不死心,又来搞,在大佬的指导下单独执行了脚本,发现由于没有配置好账号密码,每次pull的时候

都需要输入账号密码,所以才会拉取失败,但是昨天搞的时候我是配置了的呀,不然也不会一直拉到同一个版本的代码呀,很奇怪

有大佬知道是什么原因的话欢迎留言学习交流。

11、知道了原因,那就好办了,参考:解决git pull/push每次都需要输入密码问题

12、执行命令,说通俗一点就是记住账号密码。。。,这里需要注意的是你执行完命令之后需要输入一次帐号密码,这样之后的操作就不用输入了

而不是执行完就不用输入了

git config --global credential.helper store

13、单独执行脚本没有问题的话,就可以照上面的步骤配置WebHook了,然后你就可以本地push试试效果了。

宝塔webhook配合码云,本地git push 服务器自动pull的更多相关文章

  1. 码云以及Git的使用

    码云以及Git的使用 码云就是一个远程管理的仓库,Git是用来上传和下载数据的工具. 首先访问网站 https://gitee.com/ 进行注册 注册完成后,进入如下页面 点击新建仓库 设置自己的仓 ...

  2. 码云,git使用 教程

    码云,git使用 教程 code cloud, git use tutorials 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.com E-mail ...

  3. 码云,git使用 教程-便签

    码云,git使用 教程-便签 Code cloud, git use tutorial - note 作者:韩梦飞沙 Author:han_meng_fei_sha 邮箱:313134555@qq.c ...

  4. git上传本地Intellij idea 项目到码云的git仓库中

    .安装git客户端 Window下安装git客户端. 二.配置Intellij idea中的Git/ GitHub 打开Preference-- Version Control. 下拉选择Github ...

  5. 码云及Git的使用

    什么是码云 码云就是相当一个远程仓库,在以后的工作中,你和同事负责工作的不同部分,齐头并进,最后上传到码云,类似于一个汇总的作用. 同一个绳上的不同分支 码云网址链接:https://gitee.co ...

  6. 码云与Git的使用

    码云注册和使用 网址:https://gitee.com 注册之后新建一个仓库 接下来安装Git 协同开发Git安装与使用 下载地址:https://gitforwindows.org 安装完成之后选 ...

  7. 码云及git使用

    首次使用码云,将本地文件与之关联(创建仓库之后的页面截图) git -- 版本控制(协同开发软件) git add . # 将当前文件下所有内容添加到临时缓存区 git commit -m " ...

  8. 如果从码云上git clone项目

    1.本地找个文件夹右击选择 git base 2.输入地址 弹出一个窗口 需要输入用户名.密码(就是码云的登录名.密码) 3.完成

  9. 码云以及git使用

    码云的使用方法以及git的连用 创建公钥的方法 打开码云,点击个人资料---->SSH公钥---->点击怎样生成公钥 SSH Keys ssh keys可以让你在你的电脑和Git@OSC知 ...

随机推荐

  1. 英语chiltonite葡萄石chiltonite单词

    葡萄石Chiltonite 1.葡萄石能够促进血液循环,具有美容养颜的功效,非常适合女性佩戴,可以增加个人魅力,还能加强事业财运,凝聚财富气场. 2.绿色光对应人体心轮,对心脏,肺脏有效用,内涵的磁石 ...

  2. Odoo报表的report标签和报表格式定义

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826329.html 一:Report标签     report标签可用于定义一条报表记录.属性有: 1) ...

  3. Ingress-Nginx

    注意:  本文只用的ingress-nginx版本为0.24.1,可在官方网站自行下载 https://github.com/kubernetes/ingress-nginx 一.Ingress-Ng ...

  4. MySQL的select多表查询

    select 语句: select 语句一般用法为: select 字段名 from tb_name where 条件 ; select 查询语句类型一般分为三种:  单表查询,多表查询,子查询 最简 ...

  5. linux上查看swf文件.靠谱

    在linux上查看swf文件,本来想用gnash 来看,可是有的电脑上看的时候只有声音,没有图像 所以用网页来查看,推荐谷歌 我们在和flash文件的同目录下新建一个文件名为:index.html 注 ...

  6. 【转】Pandas学习笔记(一)基本介绍

    Pandas学习笔记系列: Pandas学习笔记(一)基本介绍 Pandas学习笔记(二)选择数据 Pandas学习笔记(三)修改&添加值 Pandas学习笔记(四)处理丢失值 Pandas学 ...

  7. django rest framework 认证组件

    1.认证组件 1.认证组件 1.认证组件 1.认证组件

  8. AcWing 24. 机器人的运动范围

    习题地址 https://www.acwing.com/solution/acwing/content/2970/ 题目描述地上有一个 m 行和 n 列的方格,横纵坐标范围分别是 0∼m−1 和 0∼ ...

  9. blocking cache和non-blocking cache

    - a Blocking Cache will not accept any more request until the miss is taken care of. - a Non-blockin ...

  10. 管理node.js的nvm

    我们坑同时在运行2个项目.而2个不同的项目所使用的node版本又不一样,或者是要用更新的node版本进行试验或学习.这种情况下,对于维护多个版本的node将会是一键非常麻烦的事情,而nvm就是为了解决 ...