自動倉庫測試
注意自動化構建需要 Docker Pro、Team 或 Business 訂閱。
Docker Hub 可以使用容器自動測試原始碼倉庫的更改。您可以在任何 Docker Hub 倉庫上啟用 `Autotest`,以便在每次向原始碼倉庫提交拉取請求時執行測試,從而建立持續整合測試服務。
啟用 `Autotest` 會構建一個用於測試目的的映象,但不會自動將構建的映象推送到 Docker 倉庫。如果您想將構建的映象推送到 Docker Hub 倉庫,請啟用自動化構建。
設定自動化測試檔案
要設定自動化測試,請建立一個 `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` 結尾的檔案都用於測試,並且測試按順序執行。您還可以使用自定義構建鉤子來進一步自定義測試行為。
注意如果啟用自動化構建,它們也會執行 `test.yml` 檔案中定義的任何測試。
在倉庫上啟用自動化測試
要在原始碼倉庫上啟用測試,您必須首先在 Docker Hub 中建立一個相關的構建倉庫。您的 `Autotest` 設定與自動化構建位於同一頁面,但您無需啟用自動構建即可使用自動測試。自動構建是按分支或標籤啟用的,您根本不需要啟用它。
只有配置為使用自動構建的分支才會將映象推送到 Docker 倉庫,無論自動測試設定如何。
登入 Docker Hub 並選擇 My Hub > Repositories。
選擇您要啟用 `Autotest` 的倉庫。
從倉庫檢視中,選擇 Builds 選項卡。
選擇 Configure automated builds。
按照自動化構建中的說明配置自動化構建設定。
您至少必須配置
- 原始碼倉庫
- 構建位置
- 至少一個構建規則
選擇您的 Autotest 選項。
以下選項可用
Off
:無附加測試構建。測試僅在作為自動化構建的一部分配置時執行。Internal pull requests
:對匹配構建規則的分支的任何拉取請求執行測試構建,但僅當拉取請求來自同一源倉庫時。Internal and external pull requests
:對匹配構建規則的分支的任何拉取請求執行測試構建,包括當拉取請求源自外部源倉庫時。
重要出於安全目的,公共倉庫上的外部拉取請求的自動測試受到限制。私有映象不會被拉取,並且 Docker Hub 中定義的環境變數不可用。自動化構建仍按通常方式工作。
選擇 Save 以儲存設定,或選擇 Save and build 以儲存並執行初始測試。
檢查您的測試結果
從倉庫的詳細資訊頁面,選擇 Timeline。
從此選項卡,您可以檢視倉庫的任何待處理、進行中、成功和失敗的構建和測試執行。
您可以選擇任何時間軸條目以檢視每個測試執行的日誌。