使用 Travis CI/GitHub Action 進行持續整合

Last updated on

2019 iT 邦幫忙鐵人賽 🔗文章補完計劃,從零開始建立自動化發佈的流水線合篇

在上一篇 踏入 CI/CD 的世界 - 觀念篇 介紹 CI/CD 的觀念後,接著來介紹如何使用 Travis CI 與 GitHub Actions 進行持續整合(Continuous integration, CI)。

Travis CI

吉米與 Eric 約在一個週末的下午,邀請 Eric 到他的工作室。
兩人會面後,聊了一會,就直接切入持續整合這個主題。

Eric: 吉米,你現在使用那一個程式碼托管平台?GitHub?BitBucket?還是 Azure DevOps?

吉米: 工作上主要是用 BitBucket ,Azure DevOps 也還持續在摸索中。GitHub 因為要付費才能用 private repository,倒是什麼什麼在用。

Eric: 沒關係,這次就分享幾個 CI/CD 環境給你知道。既然提到 GitHub ,我們就先聊聊 Travis CI。

吉米: 嗯嗯。

Travis CI 與 GitHub 的設定

有在參與 Open Source 專案的人,一定對 Travis CI ,這個提供 CI 的服務平台不陌生。

Travis CI 對 GitHub 有著高度的整合,讓使用者可以快速與 GitHub 帳戶內的 Repository 串接完成,享受 CI/CD 的服務。

比較可惜的是,依 Travis CI 提供的文件說明,目前只支援 GitHub。

23018 年 Travis CI 首頁
23018 年 Travis CI 首頁

在首頁,就可以觀察到 Travis CI 與 GitHub 的關係有多密切,只要使用者有 GitHub/Bitbucket/GitLab/Assembla 帳號,就可以直接登入使用。

📝 資訊補充 📝

在 2023 年的首頁,可以發現 Travis CI 支援託管平台,已經不限於 GitHub。

官方文件 🔗中,指出支援 GitHub、Bitbucket、GitLab 與 Assembla 這幾個託管平台。但是必須使用 GitHub、Bitbucket、GitLab 或 Assembla 的帳號進行註冊,才能使用對應的託管平台內的 Repository 資訊。

2023 年 Travis CI 首頁
2023 年 Travis CI 首頁

初次登入時,Travis CI 會跟使用者確認 GitHub 的存取項目與行為。

同意授權後, Travis CI 會花費一些時間,與 GitHub 內的內容同步。最終會把 GitHub 內所有的 Repository 列出來。

使用 GitHub 帳號登入/註冊
使用 GitHub 帳號登入/註冊

順帶一提,travis-ci.org 🔗 這個網址的 Travis CI 僅提供給 public repository 使用。若是想要存取 private repository ,則是要從 travis-ci.com 🔗 這個網址進入。

📝 資訊補充 📝

現在不管是從 https://travis-ci.org 🔗https://travis-ci.com/ 🔗 進入,均會轉導到 https://www.travis-ci.com/ 🔗

另外,2023 年的當下,已經不提供免費的服務,新註冊用戶可以享用 30 天的試用。

Travis CI 的付費方案
Travis CI 的付費方案

登入 Travis CI 後,在 Travis CI 的 Dashboard 內可以看到託管平台上所有的 Reposiotries。

index
index

若要對特定 repository 進行 CI,只要將 repository 後方的整合功能開啟,Travis CI 就會自動到 GitHub repository 的 webhook 的設定。完全不需要自行手動設定 webhook。

github_webhook
github_webhook

開始使用 Travis CI

在 Travis CI 與 GitHub 完成串接後,Travis CI 並不會進行任何的建置或測試。 Travis CI 所有的動作,都是由 GitHub 發生版本變更時,經過 webhook 跟 Travis CI 通知。有版本異動,麻煩執行一下 CI。

實際測試串接 Travis CI 的結果,在串接前,已先提交了一份 .net core 程式。並在完成 Travis CI 串接後,直接在 GitHub 中,增加了 README.md 的檔案。Travis CI 執行結果如下。

Travis CI 內,Repository 的 建置請求清單
Travis CI 內,Repository 的 建置請求清單

失敗的原因在於 GitHub repository 中,缺少 .travis.yml 這個檔案,導致 Travis CI 無法進行任何動作。對 Travis CI 而言,.travis.yml 中,註明專案的使用的語言、使用的框架、執行的動作等資訊。若是不清楚 travis.yml 要如何設定,也可以參照 Travis CI Document 的的寫法。

Travis CI Document 中 .NET core 設定方式
Travis CI Document 中 .NET core 設定方式
language: csharp
solution: IronmanDemo.sln
mono: none

dotnet: 2.1.300

script:
- dotnet restore IronmanDemo
- dotnet build IronmanDemo

webhooks:
on_success: always # default: always
urls:
  - https://maker.ifttt.com/trigger/CI_Build_result/with/key/den2SL6fXRgg4MJUsAj27w

on_failure: always # default: always
on_start: change # default: never
on_cancel: always # default: always
on_error: always # default: always

同時,在 Build History 中,可以很清楚的看到建置的結果與耗時。

總建置歷史結果
總建置歷史結果

而在 Travis CI 中的 Branches 中,也可以看到各分支的最近五次的整合情況。

各 Branches 最近五次的建置結果
各 Branches 最近五次的建置結果
吉米: Travis CI 的設定真的很簡單,又快速上手。前後不到幾分鐘,就完成設定了。

Eric: 不過,因為你沒有在用 GitHub,使用到 Travis CI 的機會也不高。如果真的有用 Travis CI 的時間, .travis.yml 的設定就要花時間去了解。

吉米: 了解。

Eric: 接下來,我們來聊聊 GitHub 自家的 CI/CD 工具,GitHub Action。

GitHub Actions

GitHub 在 2019/11/13 正式推出 GitHub Actions,讓開發者可以不用離開 GitHub 平台,就可以直接享受 CI/CD 的便利性。

在 Repository 的頁面,就可以看到 Actions 的頁籤,可以從此進入到 GitHub Actions 設定的頁面。

GitHub Repository 頁面
GitHub Repository 頁面

可以按下 set up a workflow yourself,從無到有,一切自己設定。可以參考 GitHub Actions Docs 🔗 文件。

不過,這樣工程有些浩大,建議使用 GitHub 會自動偵測 Repository 內容後給予的推薦設定樣版,或是撰擇現有的設定樣版。只要按下 Configure,就可以使用對應的預設樣版設定。

GitHub Actions 設定頁面
GitHub Actions 設定頁面

當按下 configure 後,GitHub 會自行在 .github/workflows/ 的位置,建立 YAML 檔案。

GitHub Actions YAML 設定
GitHub Actions YAML 設定

若是預設內容無法滿足需求,也可以檢視右端的 MarketplaceDocument 來調整 YAML 的設定。

GitHub Actions 設定中,右側可以直接查尋相關的設定說明
GitHub Actions 設定中,右側可以直接查尋相關的設定說明

當完成設定後,再進入 GitHub Actions 後,就可以查看建置的動作了。

吉米: 可以直接在 GitHub 直接進行 CI/CD 設定,真的方便了不少。

Eric: 除了 Travis CI 與 GitHub Actions 之外,還有很多好用的 CI/CD 工具。

延伸閱讀


Series
從零開始建立自動化發佈的流水線