寶塔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試試效果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM