Container Registry的構建服務其設定是綁定應用代碼源,基於Dockerfile檔案的構建規則、自動觸發鏡像構建、運行Dockerfile執行構建及構建完成後自動認可鏡像到容器鏡像倉庫的CI能力。若出現問題會導致鏡像構建失敗。本文詳細列舉了在容器鏡像構建過程中可能出現的問題現象、失敗原因分析及解決方案。
繫結來源代碼倉庫失敗
問題現象一:
在選擇代碼源時出現“原始碼賬戶沒有存取權限”類型的錯誤。
解決方案:請確認代碼源綁定是否成功。
問題現象二:
- 未列出任何代碼倉庫。
- 不支援Subgroup類型的代碼倉庫。
- 官方GitLab下拉式清單中出現很多不屬於自己的代碼倉庫,但是自己的代碼倉庫卻找不到。
- 可能是跨網域網路品質不佳,此時您可以手動填寫相應的命名空間和代碼倉庫名。
- 目前Git倉庫的URL僅支援《namespace/repository.git》這樣的兩級目錄結構,不支援超過兩級的多級結構。
- 下拉式清單會列出所有的公用倉庫,此時您可以手動填寫相應的命名空間和代碼倉庫名。
問題現象三:
建立倉庫成功,但是沒找到構建欄。
- Container Registry會先建立鏡像倉庫。
- Container Registry會通過授權的Token請求您的代碼倉庫,在該倉庫下建立Webhook。
- 綁定您的代碼倉庫到第一步建立的鏡像倉庫中。
- 您可以在倉庫詳情頁找到構建欄。
- 如果未找到構建欄,請按以下步驟依次進行確認:
- 重新整理前端頁面看是否建立成功。
- 請確保您頒發給Container Registry的Token具備建立Webhook的許可權。
- 請確保您代碼倉庫中NameSpace、Repository與Git倉庫的URL中的一致。
建立構建規則失敗
問題現象:
構建規則數超限。
解決方案:如有需求,請提升額度。
自動觸發構建失敗
問題現象:
Container Registry構建系統會依靠您的原始碼平台發送的Webhook請求來匹配構建規則,進而觸發鏡像構建,此時會出現構建失敗問題。
- 代碼倉庫下的Webhook被誤刪除:
需要您重建Webhook。
- 您代碼倉庫中NameSpace、Repository與Git倉庫的URL中的不一致,很可能是您更改了使用者名稱和倉庫名:
需要您復原變更操作。
構建速度過慢
問題現象:
鏡像構建速度過慢,可能是代碼拉取、鏡像拉取、資源下載等影響到了構建速度。這類問題主要受跨網域網路品質差、速度低的影響。
解決方案:
- 對於ACR-EE企業版執行個體構建服務,您可以參見以下步驟:
- 可以使用海外源加速能力。
- 如果海外源加速影響到了中國內地源的拉取速度,還可以選擇直拉中國內地源。
- 綜合以上兩種能力來差異化加速各種源,以取得極速構建體驗。
- 對於ACR個人版執行個體構建服務,您可以參見以下步驟:
- 您可以使用海外機器構建選項。
- 您可以使用構建緩衝。
原始碼相關失敗
問題現象一:
原始碼倉庫不存在(或無許可權)。
解決方案:
- 復原更改的使用者名稱。
- 請重新綁定阿里雲Code賬戶。
問題現象二:
拉取原始碼逾時。
解決方案:
跨網域網路品質不穩定導致原始碼拉取逾時,您可以使用海外加速能力來加快代碼拉取速度。更多內容,請參見構建速度過慢。
鏡像拉取失敗
問題現象一:
拉取海外源鏡像失敗。
解決方案:
- 建議您將國外雲廠商的鏡像上傳到Container Registry,構建時直接使用Container Registry的鏡像。
- 您可以使用海外構建能力。
問題現象二:
ACR個人版執行個體拉取阿里雲VPC網域名稱鏡像失敗。
解決方案:
個人版執行個體請使用公網網域名稱進行鏡像構建。
問題現象三:
ACR-EE企業版執行個體拉取阿里雲公網網域名稱鏡像失敗。
解決方案:
企業版執行個體請使用VPC內網網域名稱進行鏡像構建。
鏡像推送失敗
問題現象:
構建成功後,可能因網路問題出現鏡像推送失敗。
解決方案:
個人版執行個體構建完成後將通過公網推送至目標地區,可能因跨網域網路問題導致鏡像推送失敗。如果您使用了海外構建功能,則可能因跨網域網路問題導致鏡像推送到中國內地地區失敗。如遇到推送失敗問題請進行重試。
構建任務長時間等待
問題現象:
ACR個人版執行個體和企業版執行個體的構建服務對單一使用者並發構建數都有限制。
解決方案:
如果您確定是超過並發構建數導致任務等待,您可以參見以下方法解決問題。
- 個人版執行個體使用者可以升級到企業版執行個體。
- 企業版執行個體使用者可以申請提升額度。
構建過程失敗
構建過程中出現錯誤的原因很複雜。如果發生資源拉取逾時,您可以按以下方案解決。
加速您的鏡像構建速度。具體操作,請參見構建速度過慢。