過去的我,一提到 GitHub Action 就直接聯想到持續整合與佈署,然後就開始進入如何設計、撰寫 pipeline 的問題之中。實際上 GitHub Action 的定義在於自動化程序中的每一個步驟,所以除了建置、測試、佈署你的應用程式,也能將 GitHub 內部的流程自動化。
舉例來說,你能檢查 Pull Request 或 Issue 是否過於老舊;也能對於第一次發 Pull Request 至你的 Repo 的貢獻人員打個招呼;你可以在依據修改路徑,使用 label 將 Pull Request 進行分類。這些程序與你的應用程式建置與佈署沒有直接關係,但可以串接起整個開發流程。
另一方面,許多讀者可能不知道既有或第三方開發的 Action 如何使用,本篇文章也會簡單說明如何搜尋與使用官方/第三方貢獻者的 Action,讓開發者不需要每次重新製作輪子。
開啟你的 Repo > 點選 Action 按鈕 > 點選 New workflow
畫面拉至最底,可以看見四個 Automation 範本,我們點選第一個 Greeting 內的 Set up this workflow
我們來簡單說明下列的 workflow:
name: Greetings
on: [pull_request, issues]
jobs:
greeting:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/first-interaction@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
issue-message: 'Message that will be displayed on users first issue'
pr-message: 'Message that will be displayed on users first pull request'
修改完訊息後,點選右上繳 commit 儲存
接下來我們來進行測試,在 Repo 內點選 Issue > New issue
因為只是測試,所以隨意輸入標題與內容,完成後點選 Submit new issue
建立完成後,你可以在這個 Test Issue 看見我們歡迎的訊息
目前在市面上的 CI/CD 自動化產品,其實皆可以執行 Command 或 Build Script 來達到自動執行的需求。但在選擇產品時,最重要是pipeline建立與維護的難易度。過於使用難以消化的指令與過於複雜的自動化流程,往往難以達到持續的優化,最終可能造就一個執行時間久又難以修改的 workflow,變成軟體發展的絆腳石。
在 GitHub Action workflow 撰寫畫面,眼尖的讀者應該有發現右方有 MarketPlace 選項,在這裡你可以搜尋可以使用的 Action,只須點該 Action,即有 YAML 範本與使用說明,可以讓你直接修改使用
最下方有分類:Code Quality, Monitoring, Continous Integration, Project Management, Deployment, Test,讓使用者快速找到自己想到的 Action
倘若在這個搜尋欄難以找到你要的 Action 與詳細說明,最下方的 GitHub Marketplace,讓你更快找到你想要的。
注意: 盡可能使用官方、開源組織所建立的 Action,避免不知名第三方套件暗藏惡意流程
注意: 確認這些 Action 內沒有列印出 Secret 相關 command,避免敏感資訊被盜取使用
閱讀完本篇文章,你應該對於 GitHub Action 有更細部的了解:它不只是一個執行 CI/CD 自動化服務,也一個自動化的程序,更重要的是有許多可重複使用的 Action,不用讓讀者每次都建立 workflow 時都需要從重造輪子開始。下一篇文章開始,我們將開始介紹 GitHub 安全相關功能。若喜歡我的文章,歡迎點 like, 分享與訂閱。