身為學生還不趕快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: | 
 
      