要實作的功能
之前用過Github的Webhooks做過自動部署,原理就是自己伺服器上啟動一個服務,對外暴露一個接口,每次代碼push到github時,github伺服器會調用你的接口,收到請求後再執行代碼部署。
這次決定換用Actions實作一個類似的功能,原理類似,代碼push到github時,github伺服器會執行你預設好的步驟,部署代碼。要實作的功能就是:
- push代碼
- github actions runner登入自己的伺服器
- 切到目錄,拉取代碼,重新開機服務
Action的基本介紹 可以去阮一峰的部落格看看
感覺挺不錯:
GitHub Actions 入門教程
我們需要給github伺服器授權在自己的伺服器上執行一些指令,是以需要給它授權,把私匙給它。肯定不能明文寫在代碼裡,放在那裡呢?答案是Secrets中。在倉庫的Settings中,将步驟1中生成的私匙添加到Secrets中(注意添加時Name是後面actions中要用到的)。一般會把私匙、伺服器Host、伺服器User都添加到Secrets中,這樣,如果後續更改伺服器或者登陸使用者時就不需要改代碼了。
後來我們不通過ssh key 登入了 而使用password了 在下面的yml檔案中有寫
1.建立Secrets變量:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwIjNx8CX39CXy8CXycXZpZVZnFWbp9zZuBnLrVTOmlDZ0ZjY28CXwQzNhJGNyYTN2kTNzkTMtUGall3LcdXYy9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
設定好變量之後 開始編寫我們的Action的執行腳本檔案yml
可以在項目的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
複制
完事就可以自動觸發了..