自動化儲存庫測試
注意自動化建置需要 Docker Pro、Team 或 Business 訂閱。
Docker Hub 可以使用容器自動測試您原始程式碼儲存庫的變更。您可以在任何 Docker Hub 儲存庫上啟用 Autotest,以便在每次對原始程式碼儲存庫發出提取請求(Pull Request)時執行測試,從而建立持續整合測試服務。
啟用 Autotest 會為了測試目的建置一個映像檔,但不會自動將建置好的映像檔推送到 Docker 儲存庫。如果您希望將建置好的映像檔推送到您的 Docker Hub 儲存庫,請啟用自動化建置 (Automated Builds)。
設定自動化測試檔案
若要設定自動化測試,請建立一個 docker-compose.test.yml 檔案,定義一個 sut(測試對象)服務,並列出要執行的測試。docker-compose.test.yml 檔案應放置在與建置映像檔所使用的 Dockerfile 相同的目錄中。
例如
services:
sut:
build: .
command: run_tests.sh上述範例會建置該儲存庫,並使用建置好的映像檔在容器內執行 run_tests.sh 檔案。
您可以在此檔案中定義任意數量的連結服務。唯一的要求是必須定義 sut。其回傳碼決定了測試是否通過。如果 sut 服務回傳 0,則測試通過,否則即為失敗。
注意只有
sut服務以及depends_on中列出的所有其他服務會啟動。如果您有會輪詢其他服務變更的服務,請務必將這些輪詢服務包含在depends_on清單中,以確保您的所有服務都能啟動。
如有需要,您可以定義多個 docker-compose.test.yml 檔案。任何以 .test.yml 結尾的檔案都會用於測試,且測試會依序執行。您也可以使用自訂建置掛鉤 (Custom Build Hooks) 來進一步自訂您的測試行為。
注意如果您啟用了自動化建置,它們也會執行
test.yml檔案中定義的所有測試。
啟用儲存庫的自動化測試
若要在原始程式碼儲存庫上啟用測試,您必須先在 Docker Hub 中建立一個關聯的建置儲存庫。您的 Autotest 設定與自動化建置是在同一個頁面上進行配置,不過您無需為了使用 Autotest 而啟用自動化建置。自動化建置是按分支或標籤進行啟用的,您不一定需要啟用它。
無論 Autotest 設定為何,只有設定為使用自動化建置的分支才會將映像檔推送到 Docker 儲存庫。
登入 Docker Hub 並選擇 My Hub > Repositories。
選擇您想要啟用
Autotest的儲存庫。從儲存庫檢視畫面中,選擇 Builds 標籤頁。
選擇 Configure automated builds。
按照自動化建置中的說明設定自動化建置參數。
您至少必須設定以下項目:
- 原始程式碼儲存庫
- 建置位置
- 至少一條建置規則
選擇您的 Autotest 選項。
提供以下選項:
Off:不進行額外的測試建置。測試僅在設定為自動化建置的一部分時才會執行。Internal pull requests:針對匹配建置規則的分支所發出的任何提取請求(Pull Request)執行測試建置,但僅限於來自相同原始儲存庫的提取請求。Internal and external pull requests:針對匹配建置規則的分支所發出的任何提取請求執行測試建置,包含源自外部原始程式碼儲存庫的提取請求。
重要基於安全考量,公開儲存庫上的外部提取請求之自動測試受到限制。私有映像檔不會被拉取,且 Docker Hub 中定義的環境變數無法使用。自動化建置則會照常運作。
選擇 Save 以儲存設定,或選擇 Save and build 以儲存並執行初始測試。
檢查測試結果
從儲存庫的詳細資料頁面,選擇 Timeline。
在此標籤頁中,您可以查看該儲存庫所有待處理、進行中、成功及失敗的建置與測試執行狀況。
您可以選擇任何時間軸項目來查看各次測試執行的日誌。