GitHub 上的每個項目旨在紅帽企業 Linux(RHEL)、軟呢帽Linux、 CentOS CentOS Stream 7、CentOS Stream 8 和 CentOS Stream 9 在將您的更改同步到 Git 分發存儲庫 (dist-git) 之前應該進行測試。 在向客戶發佈軟件之前發現問題並幫助 QA 團隊發現錯誤非常重要。 我們必須執行左移在我們的工作流程中。
介紹
試驗農場是作為服務提供的開源測試系統。 Testing Farm的思路類似農場彙編,但重點是運行自動化測試。 它的使命是為各種用戶(如 Fedora CI、Packit 等)執行自動化測試提供可靠且可擴展的服務。 我們用戶的入口點是基於 HTTP 的 API. Testing Farm 可擴展到許多基礎設施,包括公共雲和私有云。 使用化合物 testing-farm-as-a-github-action 目前在 GitHub Marketplace 上可用,它允許您有效地測試您的項目。
GitHub Marketplace 和在此處發布操作的好處
GitHub 市場是一個開發人員可以在一個地方找到所有已發布的 GitHub Actions 的地方。 任何人都有權在 GitHub Marketplace 上發布操作。
一個動作,為了被發布,必須駐留在它自己的 GitHub 存儲庫中。
除了在公共 GitHub 存儲庫中發布操作之外,將操作發佈到 Marketplace 的好處還在於書面操作對其他用戶的可見性。
作為 GitHub 操作的農場測試
testing-farm-as-a-github-actionTFaGA,縮寫,是一個複合的 GitHub 操作,旨在從其他 GitHub 操作中使用。
其主要目的是安排測試農場基礎設施的測試,該基礎設施由發生在一個 GitHub 存儲庫並可選擇顯示測試運行的結果。
注意:測試代碼由授權人作為所有者任何一個成員以避免在測試場基礎設施上運行惡意代碼。
可以運行可以用 TMT 計劃描述的任何類型的測試。 測試環境可以選擇Fedora Linux、CentOS(包括CentOS Stream)或RHEL。 我們需要盡快測試我們的軟件。
testing-farm-as-github-action 適用於誰
TFaGA 可供開發人員或維護人員使用,通常是任何想要測試位於 GitHub 上的存儲庫的人。 任何希望將軟件添加到上述發行版的人都必須確保他們交付的是功能性軟件。 客戶喜歡運行良好且經過驗證的軟件。
動作輸入
TFaGA條目是高度可配置的,但只有兩個條目沒有默認值,必須由用戶輸入。 這些都是:
- api_key:用於測試農場的 API 密鑰
- git_url – 包含 TMT 計劃的存儲庫的 URL
注意:你可以得到API密鑰來自 [email protected]。 了解更多信息查看入職網站.
使用 TFaGA 的最小示例(在已驗證的存儲庫中)將類似於以下內容:
- name: Schedule tests Testing Farm uses: sclorg/[email protected] with: api_key: ${{ secrets.TF_API_KEY }} git_url: <URL to a TMT plan>
所有其他輸入值都是可選的,並具有預先分配的默認值。
條目分為邏輯組:
- 試驗農場
- 包含配置測試場本身的選項。 可配置項可以是 API 密鑰、TF API URL 和 TF 使用的範圍:公共或私有。
- TMT元數據
- 包含配置 TMT 規範的選項,例如帶有 TMT 計劃的 Git 存儲庫的 URL,或用於選擇計劃的正則表達式。
- 測試環境
- 包含配置操作系統和體系結構以及測試運行位置的選項。 支持的 Linux 發行版有 Fedora Linux 和 CentOS,包括 CentOS Stream、RHEL7 和 RHEL8。 此外,可以使用屬於該組的選項指定測試執行所需的機密和環境變量。
- 測試工件
- 包含要在測試環境中安裝的其他工件的配置。 有關詳細信息,請參閱API 文檔的其餘部分.
- 各種各樣的
- 包含各種雜項選項的設置,例如作業完成後是否應使用測試結果更新 PR 或應向其中寫入什麼內容。
有關門票的更多信息,請訪問自述文件.md.
行動輸出
TFaGA 動作提供,作為輸出,請求編號和一個請求網址預定的試用農場應用程序。 組合學請求網址和請求編號一起,用戶獲得指向註冊工件的 URL。 測試日誌和測試結果以文本形式從測試農場收集到這裡。
或者,如果觸發測試場操作的事件與拉取請求相關,用戶可以啟用拉取請求狀態更新。 啟用此選項可確保測試結果直接在 PR 中以圖形形式進行匯總。 下圖顯示了圖形輸出的示例。
如何將測試場用作存儲庫中的 GitHub 操作?
因為 TFaGA 是一個 GitHub Composite Action,所以假定它嵌入到其他用戶指定的 GitHub Actions 中。
通過評論 PR 觸發的操作示例
以下示例演示瞭如何在 GitHub 項目中使用 TFaGA。 設置示例可以在存儲庫.
注意:驗證測試 PR 的內容很重要,這樣才能在測試場基礎設施上執行惡意代碼。 因此,只有存儲庫的成員和所有者才能運行測試,如下例所示。
這個特定示例中的測試將由特定存儲庫的成員或所有者在 PR 中創建的評論觸發。 註釋必須包含字符串“[test]”。
name: upstream tests at Testing Farm on: issue_comment: types: Created jobs: build: name: A job run on explicit user request run-ons: ubuntu -20.04 if: | github.event.issue.pull_request && contains(github.event.comment.body, '[test]') && contains(fromJson('["OWNER", "MEMBER"]'), github.event.comment.author_association)
在合適的拉取請求分支上克隆和簽出存儲庫:
- name: Checkout repo uses: actions/[email protected]
以下是 GitHub Action 在 Testing Farm 上安排的測試。 這會將 testing-farm-as-a-github-action 傳遞給存儲在存儲庫機密中的 api_key、TMT 計劃的 URL 以及觸發測試所需的環境變量。 選擇的測試操作系統是CentOS7。
- name: Schedule tests on external Testing Farm uses: sclorg/[email protected] with: api_key: ${{ secrets.TF_API_KEY }} git_url: "https://github.com/sclorg/sclorg-testing-farm" variables: "REPO_URL=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY;REPO_NAME=$GITHUB_REPOSITORY;PR_NUMBER=${{ github.event.issue.number }};OS=centos7;TEST_NAME=test" compose: "CentOS-7"
默認情況下,測試結果直接顯示為拉取請求中的狀態使用 GitHub 狀態 API.
概括
為什麼要在您的項目中使用此 GitHub 操作? 您無需擔心測試基礎設施環境、編寫大量新的 GitHub Action 工作流程以及處理拉取請求狀態。
當您使用 TFaGA 時,您只需提供 TMT 測試計劃和 API 密鑰,即可根據您的需要獲得所有測試基礎設施。 可用的測試環境集由許多處理器架構和 Linux 發行版組成。
您的測試僅由您在配置文件中指定的操作觸發。 測試執行日誌和結果以文本形式收集、報告和存儲,並且可以選擇透明地顯示在拉取請求狀態中。
您的操作只是從 Testing Farm 團隊獲取“api_key”並編寫一個簡單的 GitHub 工作流來使用我們的 GitHub 操作。
因此,讓我們在項目交付給客戶之前盡快測試項目更改!