Container Registry企業版提供安全且高效的原始碼到容器鏡像的自動化持續整合流程,並支援基於Dockerfile規則引發的自動構建鏡像和鏡像倉庫提交功能。
前提條件
已建立Container Registry企業版執行個體。具體操作,請參見建立企業版執行個體。
已準備構建鏡像的Dockerfile檔案。
背景資訊
容器鏡像構建服務具備安全、穩定、高效等特性:
安全:鏡像構建時,系統會將單個任務派發到歸屬使用者的獨佔環境內執行構建。
穩定:由於使用使用者專屬的獨佔環境,單代碼倉庫多次構建的時間消耗較為穩定。
智能加速:
系統預設使用高效構建工具BuildKit,具備強大的構建能力(尤其針對多階段構建情境),支援豐富的構建特性。
系統託管了常用基礎鏡像。使用這些基礎鏡像,使構建過程無需進行任何鏡像拉取,大大縮減構建時間。
系統使用遠程構建緩衝來加速構建過程。
容器鏡像構建服務支援多種代碼託管平台、加速鏡像製作等能力:
代碼託管平台:支援以下代碼託管平台。
代碼平台
代碼平台版本
綁定方式
觸發構建限制
Gitee
全部
Gitee OAuth授權
無
GitHub
僅支援GitHub個人版
GitHub OAuth授權
無
GitLab
全部
私人存取權杖
無
Bitbucket
全部
Gitee OAuth授權
無
加速鏡像製作:系統支援製作按需載入的鏡像,支援在普通鏡像推送完成後,自動製作加速鏡像。具體操作,請參見按需載入容器鏡像。
步驟一:繫結來源代碼平台
構建服務前,您需要繫結來源代碼平台。詳細介紹,請參見繫結來源代碼託管平台。
本地倉庫不支援鏡像構建功能。
接入VPC內的私人GitLab,請參見使用VPC安全構建模式構建容器鏡像。
步驟二:建立命名空間
在頂部功能表列,選擇所需地區。
在左側導覽列,選擇執行個體列表。
在執行個體列表頁面單擊目標企業版執行個體。
在企業版執行個體管理頁面選擇 。
在命名空間頁面單擊建立命名空間。
在建立命名空間對話方塊中設定命名空間名稱、是否自動建立倉庫、預設倉庫類型。單擊確定。
步驟三:建立鏡像倉庫
鏡像加速僅支援標準版和進階版執行個體,建議您將基礎版執行個體升級至標準版和進階版。
建立鏡像倉庫,並綁定代碼倉庫,此代碼倉庫觸發的鏡像構建都會推送到該鏡像倉庫下。
在頂部功能表列,選擇所需地區。
在左側導覽列,選擇執行個體列表。
在執行個體列表頁面單擊目標企業版執行個體。
在企業版執行個體管理頁面選擇 。
- 在鏡像倉庫單擊建立鏡像倉庫。
在倉庫資訊設定精靈中設定命名空間、倉庫名稱、倉庫類型、鏡像版本、鏡像加速、摘要、描述資訊,單擊下一步。
在代碼源設定精靈中設定代碼源、構建設定、構建規則設定,單擊建立鏡像倉庫。
參數
說明
代碼源
選擇代碼源。
構建設定
代碼變更時自動構建鏡像:當分支有代碼提交後會自動觸發構建規則。
海外源智能加速:構建時會在海外機房構建,構建成功後推送到指定地區。如果您專案的Dockerfile檔案需要從國外網站下載檔案,但是跨境網路不穩定,您可以使用海外源智能加速。
不使用緩衝:每次構建鏡像時會強制重新拉取基礎依賴鏡像,可能會增加構建時間。關閉不使用緩衝,可以加速鏡像的構建時間。
在鏡像倉庫頁面單擊目標鏡像倉庫,您可以在鏡像倉庫管理頁面左側導覽列看到構建,說明鏡像倉庫和原始碼倉庫綁定成功。
步驟四:構建鏡像
如果您的鏡像倉庫管理頁面沒有構建,說明繫結來源代碼失敗,請參見步驟一重新繫結來源代碼。
在頂部功能表列,選擇所需地區。
在左側導覽列,選擇執行個體列表。
在執行個體列表頁面單擊目標企業版執行個體。
在企業版執行個體管理頁面左側導覽列,選擇 。
在鏡像倉庫頁面單擊目標倉庫右側操作列中的管理。
單擊左側導覽列中的構建,在構建規則設定地區單擊添加規則,在構建資訊設定精靈中設定參數,然後單擊下一步。
參數
說明
類型
設定原始碼倉庫的類型,可以是Branch或Tag。
Branch/Tag
選擇或者填寫Branch/Tag,支援正則規則。當正則規則為release-(?<imageTag>\w*)時,將識別release-v1原始碼變更並自動構建版本為v1的鏡像(不支援立即構建),更多資訊,請參見Regex命名擷取的群組。
說明設定正則規則後僅支援系統自動構建,不支援手動立即構建。
構建上下文目錄
設定Dockerfile檔案所在的目錄。指的是相對目錄,以Branch/Tag的根目錄為父目錄,例如您的Branch為master,您的Dockerfile檔案放在master下,則您的Dockerfile目錄為/。
Dockerfile檔案名稱
設定Dockerfile檔案名稱,預設為Dockerfile。
在鏡像版本設定精靈中設定參數,單擊儲存,然後單擊下一步。
說明單擊新增配置,可以增加鏡像版本,最多可以設定3個鏡像版本。
參數
說明
鏡像版本
設定鏡像Tag,例如latest。支援命名捕獲,例如使用Branch/Tag中捕獲的內容。
時間
推送原始碼的東八區(UTC+8)時間,有兩種格式可供選擇,例如20201015和202010151613。
說明該參數為可選項,當選中該參數後系統僅支援自動構建,不支援手動立即構建。
Commit ID
最近一次推送代碼的Commit ID,預設取前6位,可以滑動下方的滑塊設定位元。
說明該參數為可選項,當選中該參數後系統僅支援自動構建,不支援手動立即構建。
在構建配置設定精靈中設定構建參數,然後單擊確定。
參數
說明
構建架構
選擇構建架構,支援並行構建,最終形成一個鏡像版本對應多個架構鏡像。
構建參數
鏡像構建運行時參數,構建參數由區分大小寫索引值對組成,您最多可以設定20個構建參數。您可以設定構建參數,該構建參數會修改Dockerfile檔案中環境變數,使同一個Dockerfile檔案呈現多種狀態。
觸發構建規則。
您可以通過以下兩種方式觸發構建規則:
在構建頁面構建規則設定地區單擊目標構建規則操作列下的立即構建,觸發構建規則。
向代碼倉庫的master分支提交代碼,觸發構建規則。
說明在構建頁面構建日誌地區單擊目標構建任務操作列的取消,可以取消構建任務。
在構建頁面構建日誌地區單擊目標構建任務操作列的日誌,可以查看構建過程日誌。
在左側導覽列單擊鏡像版本,您可以看到構建的鏡像,說明構建鏡像成功。
構建鏡像樣本一:基於固定分支main構建鏡像(支援手動立即構建)
基於固定分支main構建鏡像的規則參數配置樣本如下:
類型:Branch
Branch/Tag:main
構建上下文目錄:/
Dockerfile檔案名稱:Dockerfile
鏡像版本:latest
當main分支上原始碼變更或手動單擊立即構建時,會觸發鏡像構建。構建的工作目錄是/,檔案為構建工作目錄下名為Dockerfile的檔案。鏡像構建完成後產生的鏡像版本為latest,構建規則如下圖所示。
構建鏡像樣本二:基於正則規則匹配分支構建鏡像(不支援手動立即構建)
基於正則規則匹配分支構建鏡像的規則參數配置樣本如下:
類型:Branch
Branch/Tag:release-(?<imageTag>\w*)
構建上下文目錄:/
Dockerfile檔案名稱:Dockerfile
鏡像版本:${imageTag}
時間:yyyyMMddHHmm
Commit ID:30
當以release-
開頭的分支原始碼變更時,會觸發鏡像構建。構建的工作目錄是/,檔案為構建工作目錄下名為Dockerfile的檔案。
以release-v1
的分支原始碼變更為例,正則規則release-(?<imageTag>\w*)
會將分支名中的v1
捕獲給變數imageTag
,並在鏡像版本中使用該變數。鏡像構建完成後產生的鏡像版本為v1-202010151625-d4ef3dc3b77a011a5779eec7efdd45
,構建規則如下圖所示。
相關操作
鏡像構建完成後,您還可以進行以下操作:
您可以在ACK叢集中免密拉取鏡像。具體操作,請參見使用免密組件拉取容器鏡像。
您可以在ACK叢集中使用鏡像建立應用。具體操作,請參見建立無狀態工作負載Deployment。
您可以在ACK叢集中使用P2P加速功能提升鏡像拉取速度。具體操作,請參見在ACK或ACK Serverless叢集中使用P2P加速。