排查自动构建问题
Note自动构建需要 Docker Pro、Team 或 Business 订阅。
构建失败
如果构建失败,在常规和构建标签页的构建报告行旁边会出现一个重试图标。构建报告页面和时间线日志中也会显示一个重试按钮。
Note如果您正在查看属于某个组织的仓库的构建详情,则只有当您对该仓库具有
读写权限时,取消和重试按钮才会出现。
自动构建有4小时的执行时间限制。如果构建达到此时间限制,它将被自动取消,并且构建日志将显示以下消息:
2022-11-02T17:42:27Z The build was cancelled or exceeded the maximum execution time.此日志消息与您主动取消构建时的消息相同。要确定构建是否被自动取消,请检查构建持续时间。
构建包含链接私有子模块的仓库
Docker Hub 会在您的源代码仓库中设置一个部署密钥,允许它克隆仓库并进行构建。此密钥仅对单个特定代码仓库有效。如果您的源代码仓库使用私有 Git 子模块,或在构建时需要克隆其他私有仓库,Docker Hub 将无法访问这些额外的仓库,您的构建将无法完成,并且错误会被记录在构建时间线中。
为解决此问题,您可以使用 SSH_PRIVATE 环境变量设置自动构建,以覆盖部署密钥并授予 Docker Hub 的构建系统访问这些仓库的权限。
Note如果您使用的是团队自动构建,请改用以下流程,并为您的源代码提供商配置一个服务用户。您也可以对个人账户执行此操作,以限制 Docker Hub 对您源代码仓库的访问。
-
生成一个仅用于构建的 SSH 密钥对,并将公钥添加到您的源代码提供商账户中。
此步骤是可选的,但允许您在不移除其他访问权限的情况下撤销仅用于构建的密钥对。
-
将密钥对的私钥部分复制到剪贴板。
-
在 Docker Hub 中,导航到具有链接私有子模块的仓库的构建页面。(如有必要,请按照此处的步骤配置自动构建。)
-
在屏幕底部,选择构建环境变量旁边的加号图标。
-
输入
SSH_PRIVATE作为新环境变量的名称。 -
将密钥对的私钥部分粘贴到值字段中。
-
选择保存,或选择保存并构建以验证构建现在是否完成。
Note您必须使用 SSH 方式(
git@submodule.tld:some-submodule.git)而非 HTTPS 配置您的私有 git 子模块。