Kalan's Blog

本部落主要是關於前端、軟體開發以及我在日本的生活,也會寫一些對時事的觀察和雜感

目前主題 亮色

一句話形容 Github Actions

Github 內建的 CI/CD。

![github-actions](/img/Screenshot_2020-05-02 kjj6198 animal-crossing-info.png "github-actions")

簡介

以往要做 CI,團隊中可能要花一些時間討論(吵架)CI 的解決方案,像是 CircleCI、DroneCI、Jenkins 等等,但是只要團隊當中將程式碼放在 Github 上面託管,就可以輕鬆和 Github 整合 CI,雖然的確不能說是萬靈丹、殺手鐧,但在一般要跑測試、甚至是 push and deploy 之類的場景我覺得都是蠻簡單就可以達到的,以下就來介紹一下 。

如何引入

只要在程式碼的根目錄當中加入 .github/workflows/your-workflow.yml 的描述檔就好。

相關資源

在開始之前,或許直接丟幾個文件連結按表操課更快。總之如果喜歡看完文件再動手的話可以參考:

如何為自己的專案加入 Github Actions

一個 workflow 裡頭有數個 jobs ,job 本身以數個 step 組成,step 可以是一個 github action、跑一個指令等等。大致上就像下面的範例:

name: your-name

# 可以使用的事件直接參考文件
# https://help.github.com/en/actions/reference/workflow-syntax-for-github-actions#on
on:
  push:
    branches:
      - master
    paths-ignore: # 有時候不想要改個文件也觸發 github actions,可以用這個 ignore
      - 'docs/**'
      - 'README.md'
      - 'LICENSE'
      - 'CONTRIBUTING.md'
    branches-ignore:
      - 'xxxx'
    tags-ignore:
      - 'v1.*'
env: # 塞 env variable
  PROJECT_ID: ${{ secrets.PROJECT_ID }}
  RUN_REGION: asia-northeast2
  SERVICE_ACCOUNT: ${{ secrets.SERVICE_ACCOUNT }}

jobs:
  setup-build-and-deploy:
    name: Setup gcloud and deploy
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - uses: GoogleCloudPlatform/github-actions/setup-gcloud@master
        with:
          version: '290.0.1'
          project_id: ${{ secrets.PROJECT_ID }}
          service_account_email: ${{ secrets.SA_EMAIL }}
          server_account_key: ${{ secrets.SA_KEY }}
          export_default_credentials: true
      - name: Deploy
        run: |-
          echo $SERVICE_ACCOUNT > /tmp/key.json && \
          gcloud auth activate-service-account --key-file /tmp/key.json && \
          gcloud app deploy --project "$PROJECT_ID"

比較進階的像是你想在 runtime 動態判斷,可以這樣子寫:https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions

env:
  my_env_var: ${{ ALPHA ? 'A' : 'B' }}

Github Actions 在跑的時候本身會幫你塞一些 context 進去。

## 環境變數

環境變數可以在專案當中的 secret 裡頭設定,預設是只有 Collaborator 可以看到,其他人沒辦法透過 Pull Request 來將 secret 塞進去 Github Actions。

Github Secret

這篇文章算是隨手紀錄一下 Github Actions 怎麼用,下次設定起來應該就會比較快了。

上一篇

Svelte 筆記(2):編譯器比你聰明多惹

下一篇

如何用一行 CSS 做到 smooth scroll

如果覺得這篇文章對你有幫助的話,可以考慮到下面的連結請我喝一杯 ☕️ 可以讓我平凡的一天變得閃閃發光 ✨

Buy me a coffee

作者

Kalan 頭像照片,在淡水拍攝,淺藍背景

愷開 | Kalan

愷開。台灣人,在 2019 年到日本工作,目前定居在福岡。除了熟悉前端之外對 IoT、App 開發、後端、電子電路領域都有涉略。最近開始玩電吉他。 歡迎 Email 諮詢或合作,聊聊音樂也可以,希望能透過這個部落格和更多的人交流。