天天看點

使用github Action自動化部署next項目

要實作的功能

之前用過Github的Webhooks做過自動部署,原理就是自己伺服器上啟動一個服務,對外暴露一個接口,每次代碼push到github時,github伺服器會調用你的接口,收到請求後再執行代碼部署。

這次決定換用Actions實作一個類似的功能,原理類似,代碼push到github時,github伺服器會執行你預設好的步驟,部署代碼。要實作的功能就是:

  1. push代碼
  2. github actions runner登入自己的伺服器
  3. 切到目錄,拉取代碼,重新開機服務

Action的基本介紹 可以去阮一峰的部落格看看

感覺挺不錯:

GitHub Actions 入門教程

我們需要給github伺服器授權在自己的伺服器上執行一些指令,是以需要給它授權,把私匙給它。肯定不能明文寫在代碼裡,放在那裡呢?答案是Secrets中。在倉庫的Settings中,将步驟1中生成的私匙添加到Secrets中(注意添加時Name是後面actions中要用到的)。一般會把私匙、伺服器Host、伺服器User都添加到Secrets中,這樣,如果後續更改伺服器或者登陸使用者時就不需要改代碼了。

後來我們不通過ssh key 登入了 而使用password了 在下面的yml檔案中有寫

1.建立Secrets變量:

使用github Action自動化部署next項目

設定好變量之後 開始編寫我們的Action的執行腳本檔案yml

使用github Action自動化部署next項目

可以在項目的Action中建立一個工作流,yml檔案

然後選擇自己建立新的模闆,因為不熟悉别的模闆,

暫時先用自己的

建立之後寫入:

name: deploy
on:
 push:
    branches: [ master ]
 pull_request: 
    branches: [ master ]
  # Allows you to run this workflow manually from the Actions tab

jobs:
  build:
   runs-on: ubuntu-latest
   steps:
      - name: executing remote ssh commands
        
        # 使用appleboy/ssh-action@master來執行指令
        uses: appleboy/ssh-action@master
        with:
          host: ${{secrets.DEPLOY_HOST}}
          username: ${{secrets.DEPLOY_USER}}
          password: ${{secrets.DEPLOY_PASS_WORD}}
          script: cd /data/blog2Git/blog2/ && git pull && npm install && npm run build && pm2 delete all && pm2 start npm --name "my-next" -- start           

複制

完事就可以自動觸發了..