# 身為學生還不趕快 GitHub Actions 起來
NYUST GDSC Leads Tim
# 今日主角 Github Actions
# Small Introduction
- GitHub Actions 為 GitHub 平台提供的 CI/CD 服務 (程式自動化服務)
# 工作流程架構介紹
整個 GitHub Actions 的最小流程為 action
整個工作內容有一定的階層關係在
由最高階層至最低階層為
- Workflow (工作流程)
- Job (工作)
- Step (步驟)
- Action (動作)
Workflow 可以擁有多個 Job
Job 可以擁有多個 Step
Step 可以擁有多個 Action
# OK 那我要怎麼讓我的現有專案程式自動化哩
好問題
# 實作環節
# 找一個現有專案 (這裡以我之前的 ELK 專案作範例)
可以到 GitHub 進行參考
專案連結
以下提供範例專案
# 我們來說明一下 此專案所需要的環境情境
- 我希望在 Open Pull Request 跟 Push 的時候觸發 Pipeline
- 這是一個 Django 專案
- 需要 Python 環境 且指定版本 3.10
- 需要 Pip 來安裝專案 Dependencies
- 根據專案的 Pipenv File 來安裝所需 Dependencies
- 作者在專案有附註有 Docker Compose yml 註記需要其他外在環境
- Elastic Search
- Kibana
- Logstash
- PostgreSQL
- pgAdmin
- 希望在建置好環境後進行軟體測試
OK 需求訂製好了 我們來一步步的將需求轉換成 Github Action 的 YAML 檔案上
# Step 1 作用於 Open Pull Request 與 Push
on 是 GitHub Action 作用於得關鍵字
中括弧裡面的是作用 Branch
1 | on: |
完成後 GitHub Action 就知道你要在 Main 被 Open PR 與 Push 的時候執行 Pipeline
# Step 2 建置 Django 專案 Python 環境
執行環境需要作業系統 我們使用 Ubuntu LTS 以及所需環境變數
1 | jobs: |
安裝 Python 及 Pipenv 與套件
1 | - name: Setup Python ${{ env.PYTHON_VERSION }} |
# Step 3 根據專案的 Docker Compose yaml 進行環境建置
1 | - name: Docker Compose Action |
# Step 4 進行軟體測試
1 | - name: Run tests |
# GitHub Actions Secret
# 我的環境是不想被公開放到 GitHub 的隱蔽資料,但 CI 需要這項資料該怎麼辦?
通常我們會將敏感資料建立在專案的環境變數裏頭,.env 那有時候我們的密鑰阿或是資料庫密碼等等由於需要隱藏會放在.env 裡面且避免 Commit 到 Repository 上會透過.gitignore 來避免提交,但是在 GitHub Actions CI 由於沒有.env 裡面的特定環境變數而無法建置或測試專案,這個時候 GitHub Actions 有提供一項功能來解決以上的困擾。
點開 GitHub 專案的 Settings 選項就能找到他
最後在 Repository Secret 裏頭寫入需要的環境變數就建立完成了
# GitHub Actions 調用 Secret 環境變數方法
使用 $即可調用
1 | with: |