自動倉庫測試

注意

自動化構建需要 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 倉庫,無論自動測試設定如何。

  1. 登入 Docker Hub 並選擇 My Hub > Repositories

  2. 選擇您要啟用 `Autotest` 的倉庫。

  3. 從倉庫檢視中,選擇 Builds 選項卡。

  4. 選擇 Configure automated builds

  5. 按照自動化構建中的說明配置自動化構建設定。

    您至少必須配置

    • 原始碼倉庫
    • 構建位置
    • 至少一個構建規則
  6. 選擇您的 Autotest 選項。

    以下選項可用

    • Off:無附加測試構建。測試僅在作為自動化構建的一部分配置時執行。

    • Internal pull requests:對匹配構建規則的分支的任何拉取請求執行測試構建,但僅當拉取請求來自同一源倉庫時。

    • Internal and external pull requests:對匹配構建規則的分支的任何拉取請求執行測試構建,包括當拉取請求源自外部源倉庫時。

    重要

    出於安全目的,公共倉庫上的外部拉取請求的自動測試受到限制。私有映象不會被拉取,並且 Docker Hub 中定義的環境變數不可用。自動化構建仍按通常方式工作。

  7. 選擇 Save 以儲存設定,或選擇 Save and build 以儲存並執行初始測試。

檢查您的測試結果

從倉庫的詳細資訊頁面,選擇 Timeline

從此選項卡,您可以檢視倉庫的任何待處理、進行中、成功和失敗的構建和測試執行。

您可以選擇任何時間軸條目以檢視每個測試執行的日誌。