wjohn1483.github.io
  • Posts
  • Archive
  • Audio to Scene
  • Give Feedback
  • About

利用GitHub Actions來部署部落格

 
  • Tool
  • Feb 28, 2021

前陣子發現到GitHub Actions可以用來做CI,試著使用看看。

GitHub Actions

GitHub Actions是GitHub自己出的一套CI/CD的工具,可以讓你在推code、看CI/CD都在GitHub上面解決。

GitHub Actions相較於其他CI/CD的工具,我覺得它的優勢在於免費的額度比較多,如果是public repository,actions的使用是免費的,而private repository每個月也有2000分鐘的使用時間,而且如果有其他人fork你的repository,這些CI/CD的設定也會跟著被帶走,別人也可以無痛的使用相同的CI/CD流程。

開始使用GitHub Actions

只要在repository裡面創建.github/workflows/,並在裡面放好設定檔,就可以觸發GitHub Actions了,你也可以在repository頁面的上方點Actions的頁籤,裡面有一些設定檔的範本可以選擇。

name: My first github actions

on:
  push:
    branches: [ master ]

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Build
        run: |
          echo "hello"

設定檔跟其他的工具長相差不多,在steps裡面填寫你想要做的事情,GitHub就會起一個virtual machine來執行。

設定環境變數

如果想要在Actions裡面傳入環境變數的話,可以參考底下的步驟。

graph TD;
	A(點選Repository右上角的Settings)
	B(點選左下角的Secrets)
	C(點選右上角的New repository secret)
	D(打上環境變數的名稱以及值)
    A-->B;
    B-->C;
    C-->D;

repository裡面設定好環境變數以後,在設定檔需要宣告使用哪些環境變數,之後在steps裡面就可以直接使用了。

name: My first github actions

on:
  push:
    branches: [ master ]
    
jobs:
  build:
    name: Build
    env:
      USER_NAME: ${{secrets.USER_NAME}}
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2

      - name: Build
        run: |
          echo "${USER_NAME}"

想要在Actions裡面push程式碼到repository

在Actions裡面有人寫好了工具可以讓你宣告ssh key,就能像一般利用ssh key push的方式推程式碼到你的repository裡面,產生和設定ssh public/private key的方式請參考GitHub的官方文件。

在GitHub設定好public key以後,將private key弄到ssh-agent的方式可以參考底下。

name: My first github actions

on:
  push:
    branches: [ master ]
    
jobs:
  build:
    name: Build
    env:
      USER_NAME: ${{secrets.USER_NAME}}
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2
        
      - name:
        uses: webfactory/ssh-agent@v0.5.0
        with:
          ssh-private-key: ${{secrets.SSH_PRIVATE_KEY}}

      - name: Build
        run: |
          echo "${USER_NAME}"

參考資料

  1. [淺談]用GitHub Actions 簡易的 CI 來發布GitPages
  2. 帶著走的CI/CD:GitHub Actions! (Take the CI/CD with you: GitHub Actions!)
  3. webfactory/ssh-agent
PREVIOUS利用Gitalk在靜態網頁裡面新增留言區
NEXTDeep Interest Evolution Network for Click-Through Rate Prediction
Search