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. html、css/bootStrap、js/Jquery、ajax与json数据交互总结

    设计个个人网站,利用CSS.JavaScript.HTML5.jQuery库和AJAX等 实现网站各功能模块,下面介绍我设计的网站各大功能模块:  个人简历模块: 包涵个人基本信息(利用CSS的flo ...

  2. 互联网企业级监控系统 OpenFalcon

    Open-Falcon 人性化的互联网企业级监控系统,Open-Falcon 整体可以分为两部分,即绘图组件.告警组件.其中: 安装绘图组件 负责数据的采集.收集.存储.归档.采样.查询.展示(Das ...

  3. 深入理解MDL元数据锁

    前言:  当你在MySQL中执行一条SQL时,语句并没有在你预期的时间内执行完成,这时候我们通常会登陆到MySQL数据库上查看是不是出了什么问题,通常会使用的一个命令就是 show processli ...

  4. pyTorch 基于以resnet50为backbone的PSPNet 训练VOC2012数据集

    代码链接:https://github.com/ggyyzm/pytorch_segmentation 使用PSPNet作为主干分类网络 1.将VOC2012数据集下载并解压到data/VOCtrai ...

  5. JMETER 使用断言

    断言概念 断言就是在执行某个请求后,根据返回的结果,判断返回是否正确,如果不正确,则表示事务失败. 添加断言 启动流程时返回的数据是一个 json对象,结构为 {success:true,msg:&q ...

  6. Windows平台部署 Asp.Net Core 3.1.0,将 ASP.NET Core 应用发布到 IIS ,使用 IIS 在 Windows 上托管 ASP.NET Core

    第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用. 官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutori ...

  7. django 权限设置-登录配置权限

    1.首先需要一个判断用户是否拥有这个权限的name来区分在主页上是否显示标签 在permission中加入 name=models.CharField(max_length=32, verbose_n ...

  8. pymysql 增删改 查 索引

    pymysql 模块的使用 pip install pymysql username = input ("请输入用户") pwd = input ("请输入密码" ...

  9. 移动端事件(touchstart、touchmove、touchend)--移动端开发整理笔记(三)

    移动端事件 三个事件 touchstart 手指触摸 相当于PC端 mousedown touchend 手指抬起 相当于PC端 mouseup touchmove 手指滑动 相当于PC端 mousm ...

  10. 【Mybatis】传入参数 对象+单参

    Integer update( @Param(value="bean") TXNJSTXNDetailTBBean bean, @Param(value="table&q ...