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. 【开发笔记】- AbstractRoutingDataSource动态数据源切换,AOP实现动态数据源切换

    AbstractRoutingDataSource动态数据源切换 上周末,室友通宵达旦的敲代码处理他的多数据源的问题,搞的非常的紧张,也和我聊了聊天,大概的了解了他的业务的需求.一般的情况下我们都是使 ...

  2. Object.assign的使用

    语法: Object.assign(target, ...sources)//target目标对象,sources源对象,返回值目标对象 使用说明: 如果目标对象中的属性具有相同的键,则属性将被源对象 ...

  3. php+Apache2+Nginx+Mysql

        Nginx         1.安装Nginx     sudo apt-get clean     sudo apt-get update     sudo apt-get install ...

  4. 03篇ELK日志系统——升级版集群之ELK日志系统整合springboot项目

    [ 前言:整个ELK日志系统已经搭建好了,接下来的流程就是: springboot项目中的logback日志配置通过tcp传输,把springboot项目中所有日志数据传到————>logsta ...

  5. ASP.NET Core MVC 502 bad gateway 超时如何处理

    在网页程序运行需要较长时间运行的时候,ASP.NET Core MVC会出现502 bad gateway请求超时情况.一般默认的超时时间都比较短,我们需要在 web.config 中配置一下.其中  ...

  6. Linux文本编辑器Vim使用

    1. 插入 o 在光标下插入新行 a 在光标后插入 i         在光标前插入 O 在光标上一行插入新行 A 在光标行尾插入 I 在光标行首插入 2.光标定位 gg 到第一行行首 G 到最后一行 ...

  7. Codeforces G. The Brand New Function(枚举)

    题目描述: The Brand New Function time limit per test 2 seconds memory limit per test 256 megabytes input ...

  8. linux防止恶意采集攻防战

    这两天ytkah开发的一个中大型项目被人盯上了,网站打开非常慢,查看了一下cpu.内存使用情况,30%左右占用不高,网络上下行就比较大了,IO实时流量达到40MB,IO总流量更是7TB,非常大的数据量 ...

  9. 【myBatis】java.lang.IllegalArgumentException: No enum constant org.apache.ibatis.type.JdbcType.NUMBE

    可能#{current_date, jdbcType=VARCHAR}中的VARCHAR类型不对

  10. yii2 Query Builder 查询打印sql语句

    $query = new Query(); $query->select('gs.*, g.goods_images, sa.attr_name, sa.is_default, sa.alias ...