vs code 碼雲 寶塔webhook 自動化部署程式碼到伺服器

andu發表於2021-11-22

自動化部署程式碼到伺服器,之前百度到的都是sftp同步程式碼,沒弄成功,然後發現寶塔裡有個Git遠端倉庫部署工具,¥9.99一個月,差點就買了。發現它也是利用碼雲的webhook來實現的,而且寶塔裡自帶有個免費的寶塔webhook,難道實用碼雲的webhook就可以實現自動化同步程式碼嗎?

百度搜了一下果然可以。

讓laravel跑起來

首先是在伺服器上手動clone一下程式碼,讓laravel專案能跑起來。

安裝 fileinfo 擴充套件,刪除兩個禁用的函式(proc_open, putenv)。

然後是手動clone程式碼,composer update,然後生成key。看看laravel能否正常跑起來。如果logs沒有許可權,就給storage目錄許可權。

php artisan key:generate

chmod -R 777 storage

自動化部署

先是在伺服器上生成key。

# 生成金鑰公鑰對
ssh-keygen -t rsa
# 獲取 公鑰
cat ~/.ssh/id_rsa.pub

把公鑰儲存到碼雲裡。

然後在寶塔裡安裝 寶塔webhook 1.2,安裝好後在設定裡新增webhook,執行指令碼先隨便填,之後再修改。


點選編輯,修改程式碼:

#!/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地址,選ssh方式,私有專案有密碼必須ssh)
gitHttp="git@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 origin master
        #設定目錄許可權
        #chown -R www:www $gitPath
        echo "End"
        exit
else
        echo "該專案路徑不存在"
        echo "End"
        exit
fi

測試後發現,我這裡需要使用git pull origin master程式碼才能更新。檢視寶塔webhook的金鑰:

這個程式碼跟網上的都不同,應該是寶塔webhook更新了程式碼,所以以你的寶塔webhook的具體程式碼為準,只需要把最後的aaa換成你的站點目錄即可,寶塔裡一般根目錄資料夾是域名。

然後在馬雲裡新增webhook,就是把上面的金鑰程式碼填到碼雲裡。


可以點選測試,看看寶塔裡的日誌,輸出的結果。


因為碼雲裡用的私有倉庫,克隆的時候也是需要使用者名稱和密碼登入的,所以要選擇ssh方式,可以現在伺服器端手動clone一下試試,都除錯好了再用webhook來測試。

這樣在vs code中提交程式碼後,自動同步到伺服器,可以開啟網址看到時時更新的效果了。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章