当构建未正确注册并且私钥不存在时,构建失败
创建并运行构建后,您的构建未成功完成,并且您接收到一条消息,表明该构建未正确注册并且不存在私钥。
如果接收到未正确注册构建且不存在私钥的消息,那么表示未正确定义 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命令来更新构建配置。 如果要引用注册表私钥,请通过将--registry-secret选项与build update命令配合使用来指定该私钥的名称。 如果要引用 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>