美文网首页
宝塔+git+webhook实现服务器代码同步更新

宝塔+git+webhook实现服务器代码同步更新

作者: 凯撒云 | 来源:发表于2020-01-25 23:50 被阅读0次

    1.先来说说git仓库
    git仓库有很多代码托管平台,Github、Gitee、Gitlab等等,本文使用Gitee配置webhook,其他git仓库大致相同效仿就行。

    使用git clone代码有两种方式:

    第一种:https方式,例如:https://gitee.com/xxxxx/xxxx.git

    第二种:ssh密钥方式,例如:git@gitee.com:xxxx/xxxxx.git

    这两种方式拉代码是有区别的,例:

    https方式拉代码:

    使用git命令

    git clone https://gitee.com/xxxx/xxxxx.git
    此方式在未配置保存git账号密码的机器上clone代码时需要输入账号密码,每次拉代码都需要输入账号密码比较麻烦,可以使用以下命令保存输入后的密码:

    git config credential.helper store
    此方式是将密码和仓库链接保存在硬盘中

    ssh方式拉代码:

    此方式需要在git服务器上创建公钥,创建公钥命令:

    ssh-keygen -t rsa -C "your@email.com"
    按照提示完成三次回车,即可生成 ssh key

    此命令可以在服务器上创建一个公钥可以通过下列命令查看创建的公钥:

    cat ~/.ssh/id_rsa.pub
    但是问题来了,一个服务器里面只能创建一个公钥吗?那样一个服务器部署多个项目不可能只用一个公钥吧,我们可以使用以下命令来创建多个公钥

    ssh-keygen -t rsa -C "your@email.com" -f ~/.ssh/id_rsa_new
    其中,-f 参数表示生成公钥/私钥的路径,不设置,代表默认路径。这样我们就可以在同一个服务器中创建多个公钥了,查看公钥命令

    cat ~/.ssh/id_rsa_new.pub
    接下来我们将获取的公钥复制到gitee创建的仓库中,例:

    这样我们就能使用git命令轻松的拉代码了,免去了使用账号密码的麻烦了

    备注:新手在使用git时候要在本地服务器配置一下git全局的用户名与邮箱,命令如下

    Git全局配置和单个仓库的用户名邮箱配置

    git config --global user.name  "username"
    git config --global user.email  "your@email.com"
    

    2.接下来我们来配置宝塔的webhook
    1.首先,进入宝塔面板的软件管理,找到宝塔webhook添加一个新的webhook(注意执行脚本在新添加的时候不用写,可以等待创建成功后再编写)

    2.选择你新添加的webhook,点击进入编辑添加shell命令

    #!/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是param后面的参数,指向你的服务器的目录)
    gitPath="/www/wwwroot/$1"
    #git 网址 (替换成你的git地址,可选择https方式或者ssh方式)
    gitHttp="https://gitee.com/xxx/xxx.git"
     
    echo "Web站点路径:$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 pull
            #设置目录权限
            chown -R www:www $gitPath
            echo "End"
            exit
    else
            echo "该项目路径不存在"
            echo "End"
            exit
    fi
    

    3.接下来选择你创建的webhook,然后点击查看密钥 ,注意宝塔的webhook链接是: http://面板地址:面板端口?access_key=密钥&param=你的代码目录地址
    4.进入gitee仓库选择管理的webhooks添加新的webhook (密码可以不填)
    5.添加成功后点击测试查看请求结果

    这样我们配置webhook就大功告成了

    注意:
    1.如果碰到项目比较大或者其他未知的情况,可以先在指定的目录中先把代码拉一下
    2.git私有项目必须配置公钥

    相关文章

      网友评论

          本文标题:宝塔+git+webhook实现服务器代码同步更新

          本文链接:https://www.haomeiwen.com/subject/nthdthtx.html