設定自動化構建

注意

自動化構建需要 Docker Pro、Team 或 Business 訂閱。

配置自動化構建

您可以在 Docker Hub 中配置倉庫,使其在每次向原始碼提供商推送新程式碼時自動構建映象。如果您配置了自動化測試,則只有在測試成功後才會推送新映象。

  1. Docker Hub 中,轉到我的 Hub > 倉庫,然後選擇一個倉庫以檢視其詳情。

  2. 選擇構建選項卡。

  3. 選擇 GitHub 或 Bitbucket 以連線儲存映象原始碼的位置。

    注意

    您可能會被重定向到設定頁面以關聯程式碼倉庫服務。否則,如果您正在編輯現有自動化構建的構建設定,請選擇配置自動化構建

  4. 選擇要構建 Docker 映象的源倉庫

    注意

    您可能需要指定原始碼提供商的組織或使用者。選擇使用者後,原始碼倉庫將顯示在選擇倉庫下拉列表中。

  5. 可選。啟用自動化測試

  6. 檢視預設的構建規則

    構建規則控制 Docker Hub 從原始碼倉庫的內容構建到映象中的內容,以及如何在 Docker 倉庫中標記生成的映象。

    已為您設定預設構建規則,您可以編輯或刪除它。此預設規則設定從原始碼倉庫中名為 mastermainBranch 進行構建,並建立標記為 latest 的 Docker 映象。有關更多資訊,請參閱設定構建規則

  7. 可選。選擇加號圖示以新增和配置更多構建規則

  8. 對於每個分支或 tag,啟用或停用自動化構建開關。

    只有啟用了自動化構建的分支或 tag 會被構建、測試,並且將生成的映象推送到倉庫。停用了自動化構建的分支會進行測試構建(如果在倉庫級別啟用),但構建的 Docker 映象不會推送到倉庫。

  9. 對於每個分支或 tag,啟用或停用構建快取開關。

    構建快取可以在您頻繁構建大型映象或有很多依賴項時節省時間。如果希望確保在構建時解析所有依賴項,或者如果有一個在本地構建更快的大層,請停用構建快取。

  10. 選擇儲存以儲存設定,或選擇儲存並構建以儲存並執行初始測試。

    注意

    Webhook 會自動新增到您的原始碼倉庫中,以便在每次推送時通知 Docker Hub。只有推送至列為一個或多個 tag 源的分支才會觸發構建。

設定構建規則

預設情況下,在設定自動化構建時,會為您建立一個基本構建規則。此預設規則監視原始碼倉庫中 mastermain 分支的變化,並將 mastermain 分支構建成標記為 latest 的 Docker 映象。

構建規則部分,輸入一個或多個要構建的源。

對於每個源

  • 選擇源型別以構建 tag 或分支。這告訴構建系統在原始碼倉庫中查詢什麼。

  • 輸入要構建的分支或 tag 的名稱。

    首次配置自動化構建時,會為您設定預設構建規則。此預設設定從原始碼中名為 masterBranch 進行構建,並建立標記為 latest 的 Docker 映象。

    您還可以使用正則表示式 (regex) 來選擇要構建的源分支或 tag。要了解更多資訊,請參閱正則表示式

  • 輸入要應用於由此源構建的 Docker 映象的 tag。

    如果配置了正則表示式來選擇源,可以引用捕獲組並將其結果用作 tag 的一部分。要了解更多資訊,請參閱正則表示式

  • 指定Dockerfile 位置,作為相對於原始碼倉庫根目錄的路徑。如果 Dockerfile 位於倉庫根目錄,請將此路徑設定為 /

注意

Docker Hub 從原始碼倉庫拉取分支時,會執行淺層克隆 - 僅克隆指定分支的尖端。有關更多資訊,請參閱自動化構建和自動化測試高階選項

構建的環境變數

配置自動化構建時,可以設定構建過程中使用的環境變數的值。透過選擇構建環境變數部分旁邊的加號圖示,然後輸入變數名和值來新增構建環境變數。

從 Docker Hub UI 設定變數值後,您可以在 hooks 檔案中設定的命令中使用它們。但是,它們會被儲存,只有對 Docker Hub 倉庫具有 admin 訪問許可權的使用者才能看到它們的值。這意味著您可以使用它們來儲存訪問令牌或其他應保密的資訊。

注意

在構建配置螢幕上設定的變數僅用於構建過程,不應與服務使用的環境變數混淆,例如用於建立服務連結的變數。

高階自動化構建選項

設定自動化構建至少需要一個由源分支或 tag 以及目標 Docker tag 組成的構建規則。您還可以:

  • 更改構建查詢 Dockerfile 的位置
  • 設定構建應使用的檔案路徑(構建上下文)
  • 設定多個靜態 tag 或分支進行構建
  • 使用正則表示式 (regexes) 動態選擇要構建的原始碼並建立動態 tag

所有這些選項都可在每個倉庫的構建配置螢幕上找到。在 Docker Hub 中,選擇我的 Hub > 倉庫,然後選擇要編輯的倉庫名稱。選擇構建選項卡,然後選擇配置自動化構建

Tag 和分支構建

您可以配置自動化構建,使其將特定分支或 tag 的推送作為觸發構建的條件。

  1. 構建規則部分,選擇加號圖示以新增更多要構建的源。

  2. 選擇源型別以構建 tag 或分支。

    注意

    這告訴構建系統在程式碼倉庫中查詢哪種型別的源。

  3. 輸入要構建的分支或 tag 的名稱。

    注意

    您可以輸入名稱,或使用正則表示式匹配要構建的源分支或 tag 名稱。要了解更多資訊,請參閱正則表示式

  4. 輸入要應用於由此源構建的 Docker 映象的 tag。

    注意

    如果配置了正則表示式來選擇源,可以引用捕獲組並將其結果用作 tag 的一部分。要了解更多資訊,請參閱正則表示式

  5. 為您設定的每個新構建規則重複步驟 2 到 4。

設定構建上下文和 Dockerfile 位置

根據您在原始碼倉庫中組織檔案的方式,構建映象所需的檔案可能不在倉庫根目錄。如果是這種情況,可以指定構建查詢檔案的路徑。

構建上下文是構建所需檔案相對於倉庫根目錄的路徑。在構建上下文欄位中輸入這些檔案的路徑。輸入 / 將構建上下文設定為原始碼倉庫的根目錄。

注意

如果從構建上下文欄位中刪除預設路徑 / 並留空,構建系統會將 Dockerfile 的路徑用作構建上下文。但是,為了避免混淆,建議您指定完整路徑。

您可以指定Dockerfile 位置,作為相對於構建上下文的路徑。如果 Dockerfile 位於構建上下文路徑的根目錄,請將 Dockerfile 路徑設定為 /。如果構建上下文欄位為空,請從源倉庫的根目錄設定 Dockerfile 的路徑。

正則表示式和自動化構建

您可以指定正則表示式 (regex),以便只構建匹配的分支或 tag。您還可以使用正則表示式的結果來建立應用於構建映象的 Docker tag。

您最多可以使用九個正則表示式捕獲組(或用括號括起來的表示式)來選擇要構建的源,並在Docker Tag欄位中使用 {\1}{\9} 引用它們。

使用 BuildKit 構建映象

自動化構建預設使用 BuildKit 構建系統。如果您想使用舊版 Docker 構建系統,請新增環境變數 DOCKER_BUILDKIT=0。有關 BuildKit 的更多資訊,請參閱 BuildKit 頁面。

團隊自動化構建

當您在自己的使用者賬戶中建立自動化構建倉庫時,可以啟動、取消和重試構建,以及編輯和刪除自己的倉庫。

如果您是所有者,Docker Hub 中的團隊倉庫也提供這些相同的操作。如果您是具有 write 許可權的團隊成員,則可以啟動、取消和重試團隊倉庫中的構建,但不能編輯團隊倉庫設定或刪除團隊倉庫。如果您的使用者賬戶具有 read 許可權,或者您是具有 read 許可權的團隊成員,則可以檢視構建配置,包括所有測試設定。

操作/許可權讀取寫入管理員所有者
檢視構建詳情
啟動、取消、重試
編輯構建設定
刪除構建

團隊自動化構建的服務使用者

注意

只有所有者才能為團隊設定自動化構建。

為團隊設定自動化構建時,您透過與特定使用者賬戶關聯的 OAuth 授予 Docker Hub 訪問您的原始碼倉庫的許可權。這意味著 Docker Hub 可以訪問關聯的源提供商賬戶可以訪問的所有內容。

對於組織和團隊,建議您建立一個專用的服務賬戶來授予對源提供商的訪問許可權。這確保了當個人使用者的訪問許可權發生變化時,構建不會中斷,並且個人使用者的個人專案不會暴露給整個組織。

此服務賬戶應具有對任何要構建的倉庫的訪問許可權,並且必須具有對原始碼倉庫的管理訪問許可權,以便它可以管理部署金鑰。如果需要,可以將此賬戶的許可權限制為僅限於特定構建所需的一組特定倉庫。

如果您正在構建包含關聯私有子模組(私有依賴項)的倉庫,還需要向與賬戶關聯的自動化構建新增覆蓋 SSH_PRIVATE 環境變數。有關更多資訊,請參閱故障排除

  1. 在源提供商上建立一個服務使用者賬戶,併為其生成 SSH 金鑰。

  2. 在組織中建立一個“build”團隊。

  3. 確保新的“build”團隊可以訪問您需要構建的每個倉庫和子模組。

    1. 在 GitHub 或 Bitbucket 上,轉到倉庫的設定頁面。

    2. 將新的“build”團隊新增到已批准使用者列表中。

      • GitHub:在協作者和團隊中新增團隊。
      • Bitbucket:在訪問管理中新增團隊。
  4. 將服務使用者新增到源提供商上的“build”團隊。

  5. 以所有者身份登入 Docker Hub,切換到組織,並按照說明使用服務賬戶連結到原始碼倉庫

    注意

    您可能需要退出您在原始碼提供商上的個人賬戶,以便建立到服務賬戶的連結。

  6. 可選。使用您生成的 SSH 金鑰,並利用服務賬戶和之前的說明來設定包含私有子模組的任何構建。

下一步?

頁面選項