設定自動化構建
注意自動化構建需要 Docker Pro、Team 或 Business 訂閱。
配置自動化構建
您可以在 Docker Hub 中配置倉庫,以便在每次將新程式碼推送到源提供商時自動構建映象。如果您配置了自動化測試,則只有在測試成功後才會推送新映象。
在Docker Hub中,轉到 My Hub > Repositories,然後選擇一個倉庫以檢視其詳細資訊。
選擇構建選項卡。
選擇 GitHub 或 Bitbucket 以連線儲存映象原始碼的位置。
注意您可能會被重定向到設定頁面以連結程式碼倉庫服務。否則,如果您正在編輯現有自動化構建的構建設定,請選擇配置自動化構建。
選擇要從中構建 Docker 映象的源倉庫。
注意您可能需要指定原始碼提供商的組織或使用者。選擇使用者後,原始碼倉庫將顯示在選擇倉庫下拉列表中。
可選。啟用自動測試。
檢視預設的構建規則。
構建規則控制 Docker Hub 從原始碼倉庫內容構建到映象中的內容,以及如何在 Docker 倉庫中標記生成的映象。
系統會為您設定一個預設構建規則,您可以編輯或刪除它。此預設規則從原始碼倉庫中名為`master`或`main`的`Branch`進行構建,並建立標記為`latest`的 Docker 映象。有關更多資訊,請參閱設定構建規則。
可選。選擇加號圖示以新增和配置更多構建規則。
對於每個分支或標籤,啟用或停用自動構建切換。
只有啟用自動構建的分支或標籤才會被構建、測試,並將生成的映象推送到倉庫。停用自動構建的分支會用於測試目的(如果倉庫級別啟用),但構建的 Docker 映象不會推送到倉庫。
對於每個分支或標籤,啟用或停用構建快取切換。
構建快取可以節省時間,如果您經常構建大型映象或有許多依賴項。保持構建快取停用,以確保所有依賴項在構建時解析,或者如果您有一個較大的層,本地構建速度更快。
選擇儲存以儲存設定,或選擇儲存並構建以儲存並執行初始測試。
注意webhook 會自動新增到您的原始碼倉庫中,以便在每次推送時通知 Docker Hub。只有推送到被列為一個或多個標籤源的分支才會觸發構建。
設定構建規則
預設情況下,當您設定自動化構建時,系統會為您建立一個基本構建規則。此預設規則會監視原始碼倉庫中 `master` 或 `main` 分支的更改,並將 `master` 或 `main` 分支構建為帶有 `latest` 標籤的 Docker 映象。
在構建規則部分,輸入一個或多個要構建的源。
對於每個源
選擇源型別來構建標籤或分支。這會告訴構建系統在原始碼倉庫中查詢什麼。
輸入您要構建的源分支或標籤的名稱。
首次配置自動化構建時,系統會為您設定一個預設構建規則。此預設設定從名為 `master` 的原始碼中的 `Branch` 構建,並建立標記為 `latest` 的 Docker 映象。
您還可以使用正則表示式來選擇要構建的源分支或標籤。要了解更多資訊,請參閱正則表示式。
輸入要應用於從該源構建的 Docker 映象的標籤。
如果您配置了正則表示式來選擇源,則可以引用捕獲組並將其結果用作標籤的一部分。要了解更多資訊,請參閱正則表示式。
將Dockerfile 位置指定為相對於原始碼倉庫根目錄的路徑。如果 Dockerfile 在倉庫根目錄,請將此路徑設定為
/
。
注意當 Docker Hub 從原始碼倉庫拉取分支時,它會執行淺克隆——只克隆指定分支的頂部。有關更多資訊,請參閱自動構建和自動測試的高階選項。
構建環境變數
在配置自動化構建時,您可以為構建過程中使用的環境變數設定值。透過選擇“構建環境變數”部分旁邊的加號圖示,然後輸入變數名和值來新增構建環境變數。
當您從 Docker Hub 使用者介面設定變數值時,您可以透過 `hooks` 檔案中設定的命令來使用它們。但是,它們會被儲存,只有對 Docker Hub 倉庫具有 `admin` 訪問許可權的使用者才能檢視其值。這意味著您可以使用它們來儲存訪問令牌或其他應該保密的資訊。
注意構建配置螢幕上設定的變數僅在構建過程中使用,不應與您的服務(例如建立服務連結)使用的環境變數混淆。
高階自動化構建選項
至少,您需要一個由源分支或標籤以及目標 Docker 標籤組成的構建規則才能設定自動化構建。您還可以
- 更改構建查詢 Dockerfile 的位置
- 設定構建應使用的檔案路徑(構建上下文)
- 設定多個靜態標籤或分支進行構建
- 使用正則表示式 (regexes) 動態選擇要構建的原始碼並建立動態標籤
所有這些選項都可以在每個倉庫的構建配置螢幕上找到。在Docker Hub中,選擇我的中心 > 倉庫,然後選擇要編輯的倉庫名稱。選擇構建選項卡,然後選擇配置自動化構建。
標籤和分支構建
您可以配置自動化構建,以便推送到特定分支或標籤會觸發構建。
在構建規則部分,選擇加號圖示以新增更多要構建的源。
選擇源型別以構建標籤或分支。
注意這會告訴構建系統在程式碼倉庫中查詢哪種型別的源。
輸入您要構建的源分支或標籤的名稱。
注意您可以輸入名稱,也可以使用正則表示式匹配要構建的源分支或標籤名稱。要了解更多資訊,請參閱正則表示式。
輸入要應用於從該源構建的 Docker 映象的標籤。
注意如果您配置了正則表示式來選擇源,則可以引用捕獲組並將其結果用作標籤的一部分。要了解更多資訊,請參閱正則表示式。
對於您設定的每個新構建規則,重複步驟 2 到 4。
設定構建上下文和 Dockerfile 位置
根據您在原始碼倉庫中排列檔案的方式,構建映象所需的檔案可能不在倉庫根目錄。在這種情況下,您可以指定構建查詢檔案的路徑。
構建上下文是構建所需檔案的路徑,相對於倉庫根目錄。在構建上下文欄位中輸入這些檔案的路徑。輸入/
將構建上下文設定為原始碼倉庫的根目錄。
注意如果您從構建上下文欄位中刪除預設路徑
/
並將其留空,構建系統將使用 Dockerfile 的路徑作為構建上下文。但是,為避免混淆,建議您指定完整路徑。
您可以將 Dockerfile 位置指定為相對於構建上下文的路徑。如果 Dockerfile 位於構建上下文路徑的根目錄,請將 Dockerfile 路徑設定為 /
。如果構建上下文欄位為空,請從原始碼倉庫的根目錄設定 Dockerfile 的路徑。
正則表示式和自動化構建
您可以指定正則表示式 (regex),以便只構建匹配的分支或標籤。您還可以使用正則表示式的結果來建立應用於已構建映象的 Docker 標籤。
您最多可以使用九個正則表示式捕獲組(或括號內的表示式)來選擇要構建的源,並在Docker 標籤欄位中使用{\1}
到{\9}
來引用這些捕獲組。
使用 BuildKit 構建映象
自動構建預設使用 BuildKit 構建系統。如果您想使用傳統的 Docker 構建系統,請新增環境變數 `DOCKER_BUILDKIT=0`。有關 BuildKit 的更多資訊,請參閱BuildKit頁面。
團隊自動構建
當您在自己的使用者帳戶中建立自動化構建倉庫時,您可以啟動、取消和重試構建,以及編輯和刪除您自己的倉庫。
如果您是所有者,這些操作也適用於 Docker Hub 中的團隊倉庫。如果您是具有 `write` 許可權的團隊成員,您可以啟動、取消和重試團隊倉庫中的構建,但不能編輯團隊倉庫設定或刪除團隊倉庫。如果您的使用者帳戶具有 `read` 許可權,或者您是具有 `read` 許可權的團隊成員,您可以檢視構建配置,包括任何測試設定。
操作/許可權 | 讀取 | 寫入 | 管理員 | 所有者 |
---|---|---|---|---|
檢視構建詳情 | x | x | x | x |
開始、取消、重試 | x | x | x | |
編輯構建設定 | x | x | ||
刪除構建 | x |
團隊自動構建的服務使用者
注意只有所有者才能為團隊設定自動化構建。
當您為團隊設定自動化構建時,您將使用繫結到特定使用者帳戶的 OAuth 授予 Docker Hub 訪問您的原始碼倉庫的許可權。這意味著 Docker Hub 可以訪問連結的源提供商帳戶可以訪問的所有內容。
對於組織和團隊,建議您建立一個專用服務帳戶來授予對源提供商的訪問許可權。這可以確保不會因個人使用者訪問許可權的更改而導致任何構建中斷,並且個人使用者的個人專案不會暴露給整個組織。
此服務帳戶應有權訪問所有需要構建的倉庫,並且必須對原始碼倉庫具有管理訪問許可權,以便它可以管理部署金鑰。如果需要,您可以將此帳戶限制為僅特定構建所需的一組特定倉庫。
如果您正在構建帶有連結私有子模組(私有依賴項)的倉庫,您還需要向與該帳戶關聯的自動化構建新增一個覆蓋 `SSH_PRIVATE` 環境變數。有關更多資訊,請參閱故障排除
在您的源提供商上建立一個服務使用者帳戶,併為其生成 SSH 金鑰。
在您的組織中建立一個“構建”團隊。
確保新的“構建”團隊有權訪問您需要構建的每個倉庫和子模組。
在 GitHub 或 Bitbucket 上,轉到倉庫的設定頁面。
將新的“構建”團隊新增到已批准的使用者列表中。
- GitHub:在協作者和團隊中新增團隊。
- Bitbucket:在訪問管理中新增團隊。
將服務使用者新增到源提供商上的“構建”團隊。
以所有者身份登入 Docker Hub,切換到組織,然後按照說明使用服務帳戶連結到原始碼倉庫。
注意您可能需要從原始碼提供商上的個人帳戶登出,才能建立與服務帳戶的連結。
可選。使用您生成的 SSH 金鑰,並按照先前的說明使用服務帳戶設定任何帶有私有子模組的構建。