zoukankan      html  css  js  c++  java
  • 宝塔webhook配合码云,本地git push 服务器自动pull

    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试试效果了。

  • 相关阅读:
    MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
    MyBatis学习总结(五)——实现关联表查询
    MyBatis学习总结(六)——调用存储过程
    MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
    MyBatis学习总结(二)----使用MyBatis对表执行CRUD操作
    MyBatis学习总结(三)——优化MyBatis配置文件中的配置
    CORS跨域问题
    按指定后缀名删除文件的demo
    Markdown起步
    Linux和git起步
  • 原文地址:https://www.cnblogs.com/blibli/p/11331509.html
Copyright © 2011-2022 走看看