iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0
DevOps

不僅是程式碼代管平台 - Github 能做些什麼?系列 第 19

GitHub Action Automation - 自動化你的管理程序與使用第三方 Action

過去的我,一提到 GitHub Action 就直接聯想到持續整合與佈署,然後就開始進入如何設計、撰寫 pipeline 的問題之中。實際上 GitHub Action 的定義在於自動化程序中的每一個步驟,所以除了建置、測試、佈署你的應用程式,也能將 GitHub 內部的流程自動化。

https://ithelp.ithome.com.tw/upload/images/20210919/20091494YdS6nhtKb0.png

舉例來說,你能檢查 Pull Request 或 Issue 是否過於老舊;也能對於第一次發 Pull Request 至你的 Repo 的貢獻人員打個招呼;你可以在依據修改路徑,使用 label 將 Pull Request 進行分類。這些程序與你的應用程式建置與佈署沒有直接關係,但可以串接起整個開發流程。

另一方面,許多讀者可能不知道既有或第三方開發的 Action 如何使用,本篇文章也會簡單說明如何搜尋與使用官方/第三方貢獻者的 Action,讓開發者不需要每次重新製作輪子。


GitHub Action Automation

開啟你的 Repo > 點選 Action 按鈕 > 點選 New workflow
https://ithelp.ithome.com.tw/upload/images/20210919/200914940bZtbIXPwi.png

畫面拉至最底,可以看見四個 Automation 範本,我們點選第一個 Greeting 內的 Set up this workflow
https://ithelp.ithome.com.tw/upload/images/20210919/20091494iS9gwducs7.png

我們來簡單說明下列的 workflow:

  • 觸發條件為建立 Pull RequestIssue
  • 需要的權限為 Pull Request 寫入 與 Issue 寫入
  • 使用的 action 為 actions/first-interaction@v1
  • 這個 action 所需要的參數有三個:repo-token、issue-message 與 pr-message,後兩者是給建立者的自訂訊息
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 儲存
https://ithelp.ithome.com.tw/upload/images/20210919/2009149409GYRBNQwn.png

接下來我們來進行測試,在 Repo 內點選 Issue > New issue
https://ithelp.ithome.com.tw/upload/images/20210919/20091494eE3eTvgpjX.png

因為只是測試,所以隨意輸入標題與內容,完成後點選 Submit new issue
https://ithelp.ithome.com.tw/upload/images/20210919/20091494EQJWOpCISN.png

建立完成後,你可以在這個 Test Issue 看見我們歡迎的訊息
https://ithelp.ithome.com.tw/upload/images/20210919/20091494Dn6lCT7GVD.png


使用第三方 Action

目前在市面上的 CI/CD 自動化產品,其實皆可以執行 Command 或 Build Script 來達到自動執行的需求。但在選擇產品時,最重要是pipeline建立與維護的難易度。過於使用難以消化的指令與過於複雜的自動化流程,往往難以達到持續的優化,最終可能造就一個執行時間久又難以修改的 workflow,變成軟體發展的絆腳石。

在 GitHub Action workflow 撰寫畫面,眼尖的讀者應該有發現右方有 MarketPlace 選項,在這裡你可以搜尋可以使用的 Action,只須點該 Action,即有 YAML 範本與使用說明,可以讓你直接修改使用

最下方有分類:Code Quality, Monitoring, Continous Integration, Project Management, Deployment, Test,讓使用者快速找到自己想到的 Action

https://ithelp.ithome.com.tw/upload/images/20210919/200914942kteE1yfnP.png

倘若在這個搜尋欄難以找到你要的 Action 與詳細說明,最下方的 GitHub Marketplace,讓你更快找到你想要的。

https://ithelp.ithome.com.tw/upload/images/20210919/20091494MDxUhwJGgp.png

注意: 盡可能使用官方、開源組織所建立的 Action,避免不知名第三方套件暗藏惡意流程
注意: 確認這些 Action 內沒有列印出 Secret 相關 command,避免敏感資訊被盜取使用


閱讀完本篇文章,你應該對於 GitHub Action 有更細部的了解:它不只是一個執行 CI/CD 自動化服務,也一個自動化的程序,更重要的是有許多可重複使用的 Action,不用讓讀者每次都建立 workflow 時都需要從重造輪子開始。下一篇文章開始,我們將開始介紹 GitHub 安全相關功能。若喜歡我的文章,歡迎點 like, 分享與訂閱。


上一篇
GitHub Action 實作持續交付 - 常見代理程式架構與部署至 IIS
下一篇
GitHub Security - 基本安全相關功能介紹
系列文
不僅是程式碼代管平台 - Github 能做些什麼?30

尚未有邦友留言

立即登入留言