設定自動化構建
注意
自動化構建需要 Docker Pro、Team 或 Business 訂閱。
配置自動化構建
您可以在 Docker Hub 中配置倉庫,使其在每次向原始碼提供商推送新程式碼時自動構建映象。如果您配置了自動化測試,則只有在測試成功後才會推送新映象。
在 Docker Hub 中,轉到我的 Hub > 倉庫,然後選擇一個倉庫以檢視其詳情。
選擇構建選項卡。
選擇 GitHub 或 Bitbucket 以連線儲存映象原始碼的位置。
注意
您可能會被重定向到設定頁面以關聯程式碼倉庫服務。否則,如果您正在編輯現有自動化構建的構建設定,請選擇配置自動化構建。
選擇要構建 Docker 映象的源倉庫。
注意
您可能需要指定原始碼提供商的組織或使用者。選擇使用者後,原始碼倉庫將顯示在選擇倉庫下拉列表中。
可選。啟用自動化測試。
檢視預設的構建規則。
構建規則控制 Docker Hub 從原始碼倉庫的內容構建到映象中的內容,以及如何在 Docker 倉庫中標記生成的映象。
已為您設定預設構建規則,您可以編輯或刪除它。此預設規則設定從原始碼倉庫中名為
master
或main
的Branch
進行構建,並建立標記為latest
的 Docker 映象。有關更多資訊,請參閱設定構建規則。可選。選擇加號圖示以新增和配置更多構建規則。
對於每個分支或 tag,啟用或停用自動化構建開關。
只有啟用了自動化構建的分支或 tag 會被構建、測試,並且將生成的映象推送到倉庫。停用了自動化構建的分支會進行測試構建(如果在倉庫級別啟用),但構建的 Docker 映象不會推送到倉庫。
對於每個分支或 tag,啟用或停用構建快取開關。
構建快取可以在您頻繁構建大型映象或有很多依賴項時節省時間。如果希望確保在構建時解析所有依賴項,或者如果有一個在本地構建更快的大層,請停用構建快取。
選擇儲存以儲存設定,或選擇儲存並構建以儲存並執行初始測試。
注意
Webhook 會自動新增到您的原始碼倉庫中,以便在每次推送時通知 Docker Hub。只有推送至列為一個或多個 tag 源的分支才會觸發構建。
設定構建規則
預設情況下,在設定自動化構建時,會為您建立一個基本構建規則。此預設規則監視原始碼倉庫中 master
或 main
分支的變化,並將 master
或 main
分支構建成標記為 latest
的 Docker 映象。
在構建規則部分,輸入一個或多個要構建的源。
對於每個源
選擇源型別以構建 tag 或分支。這告訴構建系統在原始碼倉庫中查詢什麼。
輸入要構建的源分支或 tag 的名稱。
首次配置自動化構建時,會為您設定預設構建規則。此預設設定從原始碼中名為
master
的Branch
進行構建,並建立標記為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 的推送作為觸發構建的條件。
在構建規則部分,選擇加號圖示以新增更多要構建的源。
選擇源型別以構建 tag 或分支。
注意
這告訴構建系統在程式碼倉庫中查詢哪種型別的源。
輸入要構建的源分支或 tag 的名稱。
注意
您可以輸入名稱,或使用正則表示式匹配要構建的源分支或 tag 名稱。要了解更多資訊,請參閱正則表示式。
輸入要應用於由此源構建的 Docker 映象的 tag。
注意
如果配置了正則表示式來選擇源,可以引用捕獲組並將其結果用作 tag 的一部分。要了解更多資訊,請參閱正則表示式。
為您設定的每個新構建規則重複步驟 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
環境變數。有關更多資訊,請參閱故障排除
在源提供商上建立一個服務使用者賬戶,併為其生成 SSH 金鑰。
在組織中建立一個“build”團隊。
確保新的“build”團隊可以訪問您需要構建的每個倉庫和子模組。
在 GitHub 或 Bitbucket 上,轉到倉庫的設定頁面。
將新的“build”團隊新增到已批准使用者列表中。
- GitHub:在協作者和團隊中新增團隊。
- Bitbucket:在訪問管理中新增團隊。
將服務使用者新增到源提供商上的“build”團隊。
以所有者身份登入 Docker Hub,切換到組織,並按照說明使用服務賬戶連結到原始碼倉庫。
注意
您可能需要退出您在原始碼提供商上的個人賬戶,以便建立到服務賬戶的連結。
可選。使用您生成的 SSH 金鑰,並利用服務賬戶和之前的說明來設定包含私有子模組的任何構建。