前言
让远端伺服器( ex: GCE)在本机修改 push 上 github 后,可以自动 git pull 更新。
本篇实作皆参考官方文件
步骤
1. 建立 github 专案,产生 action 範本,接着 git clone 至本机端和远端
专案开 public,clone 若用
https
在远端伺服器设 git config --global user.email "xxxx@example.com"
, git config --global user.name "xxxxxx"
ssh
在远端伺服器产生 ssh-keygen -t rsa -b 4096 -C "xxxx@example.com"
,再将 public key 设定在专案下的 Deploy Keys 中。 参考若还没使用过 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)
mv ~/.ssh/google_compute_engine.gpg ~/xxx/xxx/google_compute_engine.gpg
git push
上 Github5. 修改 Actions 脚本(.github/workflows/main.yml)
主要跑四个项目:
decrypt:取出在 github secrets 设定的 PASSPHRASE 参数来解密,并写入 $HOME/secrets/keytest printing:印出第一项目写入的 $HOME/secrets/keychom:更改权限,以符合私钥权限ssh: 连线至远端并下指令 git pullssh参数可参考这裏
name: CIon: [push]jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run a one-line script run: echo Hello, world! - name: decrypt run: | mkdir $HOME/secrets gpg --quiet --batch --yes --decrypt --passphrase="$PASSPHRASE" \ --output $HOME/secrets/key google_compute_engine.gpg env: PASSPHRASE: ${{ secrets.PASSPHRASE }} - name: test key run: ls $HOME/secrets/key - name: chmod run: chmod 600 $HOME/secrets/key - name: ssh run: ssh -o StrictHostKeyChecking=no -i $HOME/secrets/key sarahcheng@35.229.180.75 "cd action_ci/;git pull" # cd action_ci 要改成自己的 guthub 专案名称
Job: 由 Step 所组成,每个 Job 皆在新的执行个体 (instance) 中执行。Job 可以同时执行,亦可取决于先前的 Job 状态依序执行。
git push
上 Github6. 到 github settings 页面设定 secrets
7. 新增一个 file 并 push,最后到远端查看
OK
感谢我大 TTN 协助!!