當建置未正確登錄且密鑰不存在時,建置失敗
建立並執行建置之後,您的建置未順利完成,您會收到一則訊息,指出未正確登錄建置,且密鑰不存在。
如果您收到一則訊息,指出建置未正確登錄,且密鑰不存在,則表示 BUILD_NAME 建置未正確定義。
錯誤訊息範例
The Build is not registered correctly, build: <BUILD_NAME>, registered status: False, reason: SpecSourceSecretNotFound|SpecOutputSecretRefNotFound|MultipleSecretRefNotFound
BUILD_NAME 建置所參照的密鑰不存在。 如果原因是 SpecOutputSecretRefNotFound,則登錄密鑰不存在。 如果它是 SpecSourceSecretNotFound,則遺漏用來存取 Git 儲存庫的密鑰。 如果兩個密鑰都不存在,則原因為 MultipleSecretRefNotFound 。 請更正建置來參照現有的密鑰。
請嘗試下列其中一個解決方案。
不論您是在主控台或 CLI 中執行建置,請使用 CLI 來疑難排解您的建置問題。
- 執行
ibmcloud ce buildrun get --name BUILDRUN_NAME指令,以顯示建置執行的詳細資料。 - 檢閱指令輸出中的
Reason。
請採取下列步驟,以協助您解決建置的問題。
-
檢查您的秘密。 在建置中,密鑰用於下列用途:
- 在儲存器登錄中進行鑑別。 登錄密鑰會儲存用來存取儲存器登錄的認證。 若要列出專案中的所有密鑰 (包括現有登錄密鑰) ,請執行
ibmcloud ce secret list指令。 若要建立登錄密鑰,請執行ibmcloud ce secret create --format registry指令。 如需登錄密碼的相關資訊,請參閱 新增對專用容器登錄的存取權。 - 在專用原始碼儲存庫進行鑑別。 SSH 密鑰會儲存認證,以使用 SSH 金鑰向服務進行鑑別,例如向 Git 儲存庫進行鑑別,例如 GitHub 或 GitLab。 若要列出專案中的所有密鑰 (包括現有 SSH 密鑰) ,請執行
ibmcloud ce secret list指令。 若要建立 SSH 密鑰,請執行ibmcloud ce secret create --format ssh指令。 如需存取儲存庫之 SSH 密碼的相關資訊,請參閱 存取專用程式碼儲存庫。
- 在儲存器登錄中進行鑑別。 登錄密鑰會儲存用來存取儲存器登錄的認證。 若要列出專案中的所有密鑰 (包括現有登錄密鑰) ,請執行
-
定義密鑰之後,請使用
ibmcloud ce build update指令來更新建置配置。 如果您要參照登錄密鑰,請在build update指令中使用--registry-secret選項來指定密鑰名稱。 如果您要參照 SSH 密鑰來存取包含原始碼的專用儲存庫,以建置容器映像檔,請在build update指令中指定--git-repo-secret選項。 例如,ibmcloud ce build update --name <BUILD_NAME> [--registry-secret <REGISTRY_ACCESS_SECRET>] [--git-repo-secret <GIT_REPO_SECRET>] -
使用
ibmcloud ce buildrun submit指令來提交新的建置執行。 對於buildrun submit指令,您必須指定--build選項,以提供建置配置的名稱。 您可以選擇性地指定--name選項,以提供這項建置執行的名稱。 如果您指定--name選項,請確定您使用的建置執行名稱與失敗的建置執行名稱不同,或確定您使用ibmcloud ce buildrun delete指令來刪除失敗的建置執行。 例如,ibmcloud ce buildrun submit --build <BUILD_NAME> --name <BUILDRUN_NAME>