前言
讓遠端伺服器( ex: GCE)在本機修改 push 上 github 後,可以自動 git pull 更新。
本篇實作皆參考官方文件
步驟
1. 建立 github 專案,產生 action 範本,接著 git clone 至本機端和遠端
- 專案開 public,clone 用 https 比較省事
- 若還沒使用過 Action 可以先參考這篇
2. 開啟一個 GCE
3. 從本機端 ssh 連線到 GCE
* 測試用自動產生的 ssh key 連線: `ssh -i ~/.ssh/google_compute_engine xxxxxxx@xx.xx.xxx.xx` 確定 key 可以用
4. 將 key 加密
- 用 gpg 加密
gpg --symmetric --cipher-algo AES256 ~/.ssh/google_compute_engine
- 輸入 passphrase (test)
- 將加密後的 key 複製到專案底下
mv ~/.ssh/google_compute_engine.gpg ~/xxx/xxx/google_compute_engine.gpg
git push
上 Github
5. 修改 Actions 腳本(.github/workflows/main.yml)
主要跑四個項目:
- decrypt:取出在 github secrets 設定的 PASSPHRASE 參數來解密,並寫入 $HOME/secrets/key
- test printing:印出第一項目寫入的 $HOME/secrets/key
- chom:更改權限,以符合私鑰權限
- ssh: 連線至遠端並下指令 git pull
ssh參數可參考這裏
1 | name: CI |
Job: 由 Step 所組成,每個 Job 皆在新的執行個體 (instance) 中執行。Job 可以同時執行,亦可取決於先前的 Job 狀態依序執行。
git push
上 Github
6. 到 github settings 頁面設定 secrets
7. 新增一個 file 並 push,最後到遠端查看
OK
感謝我大 TTN 協助!!