Github Actions SSH CD

前言

让远端伺服器( 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)
将加密后的 key 複製到专案底下 mv ~/.ssh/google_compute_engine.gpg ~/xxx/xxx/google_compute_engine.gpggit push 上 Github

5. 修改 Actions 脚本(.github/workflows/main.yml)

主要跑四个项目:

decrypt:取出在 github secrets 设定的 PASSPHRASE 参数来解密,并写入 $HOME/secrets/keytest printing:印出第一项目写入的 $HOME/secrets/keychom:更改权限,以符合私钥权限ssh: 连线至远端并下指令 git pull

ssh参数可参考这裏

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 上 Github

6. 到 github settings 页面设定 secrets

7. 新增一个 file 并 push,最后到远端查看

OK

感谢我大 TTN 协助!!


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章