创建从公共存储库中提取源的构建配置
如果源位于公共存储库中,请使用包含有关从公共存储库中提取源的位置的信息的设置来创建构建配置。 对于构建输出,您可以选择指定注册表详细信息以及注册表私钥,以访问注册表中的已构建映像。 或者,您可以选择让 Code Engine 负责从源构建映像,并将该映像存储在 IBM Cloud Container Registry中。 对于这种情况,您不需要指定注册表私钥或映像注册表的位置。
创建构建配置不会创建映像,但会创建用于构建映像的配置。 然后,必须运行引用构建配置的构建以创建映像。 在运行构建之前,不会验证构建配置或使用构建配置来创建映像。 构建配置支持映像的多个后续构建,例如,将更改应用于源存储库时。
您可以选择通过使用 .ceignore
文件来忽略源代码中的某些文件模式,该文件的行为与 .gitignore
文件类似。 例如,node.js 应用程序的 .ceignore
文件的条目可能包括 node_modules
和 .npm
。 有关要忽略的更多样本文件模式,请参阅 GitHub.gitignore 存储库。
从控制台创建构建配置 (公共存储库)
-
转至 Code Engine 仪表板。
-
选择在其中添加了容器注册表的项目。
-
在项目页面中,单击 映像构建。
-
从 映像构建 选项卡中,单击 创建。 此时将打开 指定构建详细信息 侧面板,您可以在其中输入构建的详细信息。
-
在 源 部分中,输入构建的名称,源存储库的 URL 以及代码存储库访问权。
- 如果您的代码位于公共存储库中,请使用 HTTPS URL 并选择 无 以进行代码存储库访问。 HTTPS URL 的示例为
https://github.com/IBM/CodeEngine
。 - 如果您的代码位于专用存储库中,请对代码存储库 URL 使用 SSH URL,然后选择现有代码存储库访问权的名称或 创建代码存储库访问权。 SSH URL 的示例为
git@github.com:IBM/CodeEngine.git
。 - (可选) 选择源分支名称。 如果未提供分支名称,并且将该字段留空,那么 Code Engine 将自动使用指定存储库的缺省分支。 您可以输入任何其他分支名称,标记或落实标识。
单击下一步以继续。
- 如果您的代码位于公共存储库中,请使用 HTTPS URL 并选择 无 以进行代码存储库访问。 HTTPS URL 的示例为
-
在 策略 部分中,选择要使用的 策略。
- 如果选择 Dockerfile,那么还可以指定 Dockerfile 的备用路径。
- 在 构建资源下选择构建的大小。
单击下一步以继续。
-
在 输出 部分中,输入容器映像的详细信息。
- 选择现有注册表私钥,或者单击 创建注册表私钥 以添加新的注册表私钥。
- 如果要将映像构建到帐户中的 Container Registry 实例,那么可以选择
Code Engine managed secret
并 Code Engine 为您创建和管理私钥。 - 然后,选择要构建的映像的名称空间,存储库和标记。 您可以选择 Code Engine tp 在 Container Registry 中创建和管理名称空间。
- 如果您的映像存在于 Container Registry中,那么可以从现有映像中进行选择,或者输入新的存储库或标记。
-
单击 完成 以完成构建的创建。
创建构建配置后,必须 运行构建 以创建映像文件。 创建映像文件后,可以 部署应用程序 或使用新构建的映像文件 运行作业。
使用 CLI (公共存储库) 创建构建配置
要使用 CLI 创建构建配置,请使用 build create
命令。 有关选项的完整列表,请参阅 ibmcloud ce build create
命令。
使用 build create
命令,您可以选择让 Code Engine 负责从您的源构建映像,然后将该映像存储在 IBM Cloud Container Registry中。 对于此 自动访问 情况,您不需要指定注册表私钥或映像注册表的位置。 或者,您可以指定构建映像输出的位置并提供注册表私钥,以便 Code Engine 可以访问构建结果并将其推送到注册表。
使用 CLI 创建构建配置 (具有公共存储库源和对注册表的自动访问权)
在此场景中,Code Engine 从公共 Git 存储库源构建映像,并通过自动访问将该映像自动上载到 IBM Cloud Container Registry。 请参阅 设置映像注册表的权限,以获取有关设置 Code Engine 自动访问 Container Registry中的这些映像所需的许可权的更多信息。
准备工作
-
创建构建配置以从公共 Git 存储库构建映像,并让 Code Engine 自动存储和访问该映像。 例如,以下
build create
命令将创建名为helloworld-build
的构建配置,该构建配置从公共 Git 存储库https://github.com/IBM/CodeEngine
中的源构建。 在此示例中,该命令使用缺省dockerfile
策略和缺省medium
构建大小。 由于未使用--commit
选项指定存储库的分支名称,因此 Code Engine 会自动使用指定存储库的缺省分支,即此 Git 存储库的main
。 通过不指定映像注册表或注册表私钥的位置,Code Engine 将构建输出推送到具有自动访问权的 IBM Cloud Container Registry。ibmcloud ce build create --name helloworld-build --source https://github.com/IBM/CodeEngine --context-dir /hello
示例输出
Creating build helloworld-build... OK
下表概述了此示例中与
build create
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce build create
命令。命令描述 选项 描述 --name
构建的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母开头。
-名称必须以小写字母数字字符结尾。
-名称必须不超过 55 个字符,并且可以包含字母,数字和连字符 (-)。--source
包含源代码的 Git 存储库的 URL; 例如, https://github.com/IBM/CodeEngine
。--context-dir
存储库中包含 buildpack 文件或 Dockerfile 的目录。 如果 buildpack 文件或 Dockerfile 包含在子目录中,请指定此值。 此值是可选的。 -
使用
build get
命令来检查构建的状态。ibmcloud ce build get --name helloworld-build
示例输出
请注意为映像生成的名称,并且自动创建的注册表私钥的名称格式为
ce-auto-icr-private-<region>
。Getting build 'helloworld-build' OK Name: helloworld-build ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2022-05-24T09:58:43-05:00 Build Type: git Status: Succeeded Reason: all validations succeeded Image: private.us.icr.io/ce--e97a8-odof2whblw5/build-helloworld-build Registry Secret: ce-auto-icr-private-us-south Build Strategy: dockerfile-medium Timeout: 10m0s Source: https://github.com/IBM/CodeEngine Commit: main Context Directory: /hello Dockerfile: Dockerfile
创建构建配置后,必须 运行构建 以创建映像文件。 创建映像文件后,可以 部署应用程序 或使用新构建的映像文件 运行作业。
使用 CLI 创建构建配置 (具有公共存储库源和用户提供的对注册表的访问权)
在此场景中,Code Engine 从公共 Git 存储库源构建映像,然后使用您提供的注册表访问权将该映像上载到容器注册表。
准备工作
-
创建构建配置以从公共 Git 存储库构建映像,并使用注册表私钥为构建输出指定映像注册表的位置。 使用
build create
命令,指定--image
选项以提供映像注册表的位置,并指定--registry-secret
选项以访问注册表。 例如,以下命令创建名为helloworld-build2
的构建配置,该构建配置从公共 Git 存储库https://github.com/IBM/CodeEngine
构建,并使用myregistry
注册表私钥将映像存储到us.icr.io/mynamespace/codeengine-helloworld
。 在此示例中,该命令使用缺省dockerfile
策略和缺省medium
构建大小。 由于未使用--commit
选项指定存储库的分支名称,因此 Code Engine 会自动使用指定存储库的缺省分支,即此 Git 存储库的main
。如果要将
--strategy
选项与dockerfile
的值配合使用,请确保--dockerfile
选项正确设置为dockerfile
的名称。--strategy
选项的缺省值为Dockerfile
。ibmcloud ce build create --name helloworld-build2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --context-dir /hello
示例输出
Creating build helloworld-build2... OK
下表概述了此示例中与
build create
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce build create
命令。命令描述 选项 描述 --name
构建的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母开头。
-名称必须以小写字母数字字符结尾。
-名称必须不超过 55 个字符,并且可以包含字母,数字和连字符 (-)。--image
映像注册表的位置。 该位置的格式必须是 REGISTRY/NAMESPACE/REPOSITORY
或REGISTRY/NAMESPACE/REPOSITORY:TAG
,其中TAG
是可选的。 如果未指定TAG
,则默认为latest
。--registry-secret
用于访问注册表的注册表私钥。 您可以通过运行 secret create --format registry
命令来添加注册表私钥。 注册表私钥用于向专用注册表进行认证。--source
包含源代码的 Git 存储库的 URL; 例如, https://github.com/IBM/CodeEngine
。--context-dir
存储库中包含 buildpack 文件或 Dockerfile 的目录。 如果 buildpack 文件或 Dockerfile 包含在子目录中,请指定此值。 此值是可选的。 -
使用
build get
命令来检查构建的状态。ibmcloud ce build get --name helloworld-build2
示例输出
Getting build 'helloworld-build2' OK Name: helloworld-build2 ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2021-03-14T14:48:19-05:00 Status: Succeeded Reason: all validations succeeded Image: us.icr.io/mynamespace/codeengine-helloworld Registry Secret: myregistry Build Strategy: dockerfile-medium Timeout: 10m0s Source: https://github.com/IBM/CodeEngine Commit: main Context Directory: /hello Dockerfile: Dockerfile
创建构建配置后,必须 运行构建 以创建映像文件。 创建映像文件后,可以 部署应用程序 或使用新构建的映像文件 运行作业。
如果接收到命令验证失败,请检查私钥是否存在。 如果针对映像引用注册表私钥 (--registry-secret
) 并且该私钥不存在,请参阅 访问容器注册表。 有关构建的更多信息,请查看 故障诊断技巧。