使用独立构建命令 (CLI) 构建容器映像
当您的代码作为源存在于本地文件或 Git 存储库中时,Code Engine 根据 Open Container Initiative(OCI)标准为您提供用于将代码构建为容器映像的选项。 通过 Code Engine CLI,您可以使用单个命令构建容器映像。
Code Engine 提供了处理构建过程的灵活性,无论您是 从存储库源代码部署应用程序,使用 CLI 从本地源代码部署应用程序,还是 从存储库源代码创建作业 或 使用 CLI 从本地源代码创建作业。
但是,如果您希望更多地控制容器映像的构建,那么 Code Engine 使您能够灵活地使用下列其中一个选项来构建容器映像:
- 使用单个 CLI 命令
buildrun submit
来运行一次构建运行。 此选项的优点是您可以使用单个 CLI 命令获取构建; 但是,不会保留该构建的配置。 - 定义可从中运行多个构建运行的构建配置。 请参阅 使用构建配置构建容器映像。
在构建完成并且映像存在后,可以将容器映像部署为应用程序或创建引用映像的作业。
让我们了解如何使用单个命令构建容器映像,而不引用构建配置。 在此场景中,IBM Cloud® Code Engine 从 Git 存储库或本地目录中提取源代码,构建源代码,然后将容器映像推送 (上载) 到注册表。 您可以选择公共或专用 存储库 和 注册表。 您可以选择使用注册表私钥为具有 用户提供的访问权的构建输出指定注册表详细信息。 或者,您可以选择让 Code Engine 负责从源构建映像,并使用 自动访问将该映像存储在 IBM Cloud Container Registry 中。
您可以选择通过使用 .ceignore
文件来忽略源代码中的某些文件模式,该文件的行为类似于 .gitignore
文件。 例如,node.js 应用程序的 .ceignore
文件的条目可能包括 node_modules
和 .npm
。 有关要忽略的更多样本文件模式,请参阅 GitHub.gitignore 存储库。
在构建容器映像之前,请考虑以下几点:
-
在开始构建映像之前,请查看 规划信息。 您还需要验证是否可以访问注册表。 请参阅 设置容器注册表的权限。
-
如果构建同一容器映像的多个版本,那么在运行作业或部署应用程序时将下载并使用最新版本的容器映像,除非为该映像指定了标记。 如果为映像指定了标记,那么标记的映像将用于应用程序或作业。
-
还可以从控制台查看使用 CLI 提交的未引用已定义构建配置的构建运行。 在项目页面中,单击 映像构建 以查看映像构建和构建运行的列表。 通过 CLI,使用
ibmcloud ce buildrun list
命令来查看项目中所有构建运行的列表。 -
Code Engine 具有项目中的构建运行配额。 有关 Code Engine 限制的更多信息,请参阅 Code Engine。
最终会自动删除完成的构建运行。 使用单个 CLI 命令运行构建运行时,如果此构建运行不是基于构建配置,那么如果构建运行成功,那么将在 1 小时后删除此构建运行。 如果构建运行不成功,那么将在 24 小时后删除此构建运行。 只能使用 CLI 显示有关此构建运行的信息。 无法在控制台中查看此构建运行。
使用 CLI 运行从公共存储库中拉取源的单个构建
如果源位于公共存储库中,并且要使用单个命令来构建和输出容器映像,请使用 buildrun submit
命令来创建容器映像,而不创建可复用的构建配置。
对于构建输出,您可以选择 自动访问,并让 Code Engine 负责从源构建映像并将该映像存储在 IBM Cloud Container Registry中。 对于这种情况,您不需要指定注册表私钥或映像注册表的位置。 或者,您可以选择 用户提供的访问权,并指定注册表详细信息以及注册表私钥以访问注册表中的已构建映像。
有关用于运行单个构建的选项的完整列表,请参阅 ibmcloud ce buildrun submit
命令。
使用 CLI 运行单个构建 (具有公共存储库源和对注册表的自动访问权)
在此 自动访问 方案中,Code Engine 从公共 Git 存储库源构建映像,并通过将构建选项与 buildrun submit
命令配合使用,将该映像上载到具有自动访问权的 IBM Cloud Container Registry。 在这种情况下,您不需要指定注册表私钥或映像注册表的位置。
请参阅 设置映像注册表的权限,以获取有关设置 Code Engine 自动访问 Container Registry中的这些映像所需的许可权的更多信息。
准备工作
-
运行构建以从公共 Git 存储库构建映像,并让 Code Engine 自动存储和访问该映像。 例如,以下
buildrun submit
命令运行名为helloworld-buildrun
的构建运行,该运行从公共 Git 存储库https://github.com/IBM/CodeEngine
中的源构建。ibmcloud ce buildrun submit --name helloworld-buildrun --source https://github.com/IBM/CodeEngine --context-dir /hello
- 在此示例中,该命令使用缺省
dockerfile
策略和缺省medium
构建大小。 - 由于未使用
--commit
选项指定存储库的分支名称,因此 Code Engine 会自动使用指定存储库的缺省分支,即此 Git 存储库的main
。 - 通过不指定映像注册表或注册表私钥的位置,Code Engine 将构建输出推送到具有自动访问权的 IBM Cloud Container Registry。
- Code Engine 根据
--source
选项的值自动确定源是驻留在存储库中还是驻留在本地工作站上。
示例输出
Submitting build run 'helloworld-buildrun'... Creating image 'private.us.icr.io/ce--12ce3-defg4h5ij6d/buildrun-helloworld-buildrun'... Run 'ibmcloud ce buildrun get -n helloworld-buildrun' to check the build run status. OK
下表概述了此示例中与
buildrun submit
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce buildrun submit
命令。命令描述 选项 描述 --name
构建运行的名称。 使用在项目中唯一的名称。
-该名称必须以小写字母开头和结尾。
-该名称必须不超过 63 个字符,并且可以包含小写字母数字字符和连字符 (-)。--source
Git 存储库的 URL 或包含源代码的本地源的路径; 例如, https://github.com/IBM/CodeEngine
。--context-dir
存储库中包含 buildpack 文件或 Dockerfile 的目录。 如果 buildpack 文件或 Dockerfile 包含在子目录中,请指定此值。 - 在此示例中,该命令使用缺省
-
使用
buildrun get
命令可检查构建运行的状态。ibmcloud ce buildrun get -n helloworld-buildrun
示例输出
请注意为映像生成的名称,并且自动创建的注册表私钥的名称格式为
ce-auto-icr-private-<region>
。Getting build 'helloworld-buildrun' For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build. Run 'ibmcloud ce buildrun events -n helloworld-buildrun' to get the system events of the build run. Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun' to follow the logs of the build run. OK Name: helloworld-buildrun ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2022-06-07T15:30:46-04:00 Build Type: git Summary: Succeeded Status: Succeeded Reason: All Steps have completed executing Source: Commit Branch: main Commit SHA: 946dd18f6e5a5474336786bc28d7dda93aec49c1 Commit Author: COMMIT_AUTHOR Image Digest: sha256:ba3c445a27238040e102c083f76ad8922effcc3a7c4dc97b8472e626d87c11a2 Image: private.us.icr.io/ce--12ce3-defg4h5ij6d/buildrun-helloworld-buildrun 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 存储库构建映像,并指定具有注册表私钥的构建输出的映像注册表位置。 例如,以下
buildrun submit
命令运行名为helloworld-buildrun2
的构建运行,该运行从公共 Git 存储库https://github.com/IBM/CodeEngine
构建,并使用myregistry
注册表私钥将映像存储到us.icr.io/mynamespace/codeengine-helloworld
注册表以访问此注册表。ibmcloud ce buildrun submit --name helloworld-buildrun2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source https://github.com/IBM/CodeEngine --context-dir /hello
- 在此示例中,该命令使用缺省
dockerfile
策略和缺省medium
构建大小。 - 由于未使用
--commit
选项指定存储库的分支名称,因此 Code Engine 会自动使用指定存储库的缺省分支,即此 Git 存储库的main
。 - 如果要将
--strategy
选项与值dockerfile
配合使用,请确保--dockerfile
选项正确设置为dockerfile
的名称。--strategy
选项的缺省值为Dockerfile
。 - Code Engine 根据
--source
选项的值自动确定源是驻留在存储库中还是驻留在本地工作站上。
示例输出
Submitting build run 'helloworld-buildrun2'... Creating image 'us.icr.io/mynamespace/codeengine-helloworld'... Run 'ibmcloud ce buildrun get -n helloworld-buildrun2' to check the build run status. OK
下表概述了此示例中与
buildrun submit
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce buildrun submit
命令。命令描述 选项 描述 --name
构建运行的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母开头和结尾。
-名称必须不超过 63 个字符,并且可以包含小写字母数字字符和连字符 (-)。--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 包含在子目录中,请指定此值。 - 在此示例中,该命令使用缺省
-
使用
buildrun get
命令可检查构建运行的状态。ibmcloud ce buildrun get --name helloworld-buildrun2
示例输出
Getting build run 'helloworld-buildrun2'... For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build. Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n helloworld-buildrun2' to get the system events of the build run. Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n helloworld-buildrun2' to follow the logs of the build run. OK Name: helloworld-buildrun2 ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2022-06-07T15:57:43-04:00 Build Type: git Summary: Succeeded Status: Succeeded Reason: All Steps have completed executing Source: Commit Branch: main Commit SHA: 946dd18f6e5a5474336786bc28d7dda93aec49c1 Commit Author: COMMIT_AUTHOR Image Digest: sha256:6312ee613efa5bec7baa20c47f607e7f15473947d5675fd7384491bee8023afc Image: us.icr.io/mynamespace/codeengine-helloworld2 Registry Secret: myregistry Build Strategy: dockerfile-medium Timeout: 10m0s Source: https://github.com/IBM/CodeEngine Context Directory: /hello Dockerfile: Dockerfile
如果接收到命令验证失败,请检查私钥是否存在。 如果针对映像引用注册表私钥 (--registry-secret
),并且该私钥不存在,请参阅 访问容器注册表。 有关构建的更多信息,请查看 故障诊断技巧。
使用 CLI 运行从专用存储库中拉取源的单个构建
如果源位于专用存储库中,并且要使用单个命令来构建和输出容器映像,请使用 buildrun submit
命令来创建容器映像,而不创建可复用的构建配置。
对于构建输出,您可以选择 自动访问,并让 Code Engine 负责从源构建映像并将该映像存储在 IBM Cloud Container Registry中。 对于这种情况,您不需要指定注册表私钥或映像注册表的位置。 或者,您可以选择 用户提供的访问权,并指定注册表详细信息以及注册表私钥以访问注册表中的已构建映像。
有关用于运行单个构建的选项的完整列表,请参阅 ibmcloud ce buildrun submit
命令。
使用 CLI 运行单个构建 (具有专用存储库源和对注册表的自动访问权)
在此 自动访问 方案中,Code Engine 从专用存储库源构建映像,并通过使用构建选项和 buildrun submit
命令将该映像上载到具有自动访问权的 IBM Cloud Container Registry。 在这种情况下,您不需要指定注册表私钥或映像注册表的位置。
请参阅 设置映像注册表的权限,以获取有关设置 Code Engine 自动访问 Container Registry中的这些映像所需的许可权的更多信息。
准备工作
-
运行构建以从专用存储库构建映像,并让 Code Engine 自动存储和访问该映像。 例如,以下
buildrun submit
命令运行名为helloworld-buildrun-private
的构建运行,该运行是从专用 Git 存储库https://github.com/myprivaterepo/builds
构建的。ibmcloud ce buildrun submit --name helloworld-buildrun-private --source git@github.com:myprivaterepo/builds.git --context-dir /hello --strategy buildpacks --git-repo-secret myrepossh
- 此示例命令使用
buildpacks
策略和medium
构建大小。 - 通过不指定映像注册表或注册表私钥的位置,Code Engine 将构建输出推送到具有自动访问权的 IBM Cloud Container Registry。
- 由于指定的 Git 存储库中的源是专用的,因此访问需要 SSH 密钥。 SSH 私钥也用作 Git 存储库访问私钥。 因此,您指定的
--source
必须使用 SSH 协议,例如git@github.com:myprivaterepo/builds.git
。--source
的值不得使用http
或https
格式。 - 由于未使用
--commit
选项指定存储库的分支名称,因此 Code Engine 会自动使用指定存储库的缺省分支。 - Code Engine 根据
--source
选项的值自动确定源是驻留在存储库中还是驻留在本地工作站上。
下表概述了此示例中与
buildrun submit
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce buildrun submit
命令。命令描述 选项 描述 --name
构建运行的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母开头和结尾。
-名称必须不超过 63 个字符,并且可以包含小写字母数字字符和连字符 (-)。--source
Git 存储库的 URL 或包含源代码的本地源的路径; 例如, git@github.com:myprivaterepo/builds.git
。--context-dir
存储库中包含 buildpack 文件或 Dockerfile 的目录。 如果 buildpack 文件或 Dockerfile 包含在子目录中,请指定此值。 --strategy
用于构建映像的策略。 有效值为 dockerfile
和buildpacks
。--git-repo-secret
SSH 私钥的名称,其中包含用于访问专用存储库的凭证,该专用存储库包含用于构建容器映像的源代码。 运行 secret create --ssh
命令以创建此私钥。 SSH 私钥也用作 Git 存储库访问私钥。 - 此示例命令使用
-
使用
buildrun get
命令可检查构建运行的状态。ibmcloud ce buildrun get --name helloworld-buildrun-private
示例输出
Getting build run 'helloworld-buildrun-private'... For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build. Run 'ibmcloud ce buildrun events -n helloworld-buildrun-private' to get the system events of the build run. Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun-private' to follow the logs of the build run. OK Name: helloworld-buildrun-private ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2022-06-08T06:02:36-05:00 Build Type: git Summary: Succeeded Status: Succeeded Reason: All Steps have completed executing Source: Commit Branch: main Commit SHA: 946dd18f6e5a5474336786bc28d7dda93aec49c1 Commit Author: COMMIT_AUTHOR Image Digest: sha256:39c4a87bc43102c2ee88562072c57c135b8dcc5cc4a1104e1d782fe3acc5d5b6 Image: private.us.icr.io/ce--e97a8-odof2whblw5/build-helloworld-buildrun-private Registry Secret: ce-auto-icr-private-us-south Build Strategy: buildpacks-v3-medium Timeout: 10m0s Source: git@github.com:myprivaterepo/builds.git Context Directory: /hello Repo Secret: myrepossh
使用 CLI 运行单个构建 (具有专用存储库源和用户提供的对注册表的访问权)
在此 用户提供的访问权 方案中,Code Engine 使用您提供的 Git 存储库私钥从专用存储库源构建映像,然后使用您通过单个构建命令提供的注册表访问权将该映像上载到容器注册表。
准备工作
-
运行构建以从专用存储库构建映像,并使用注册表私钥为构建输出指定映像注册表的位置。 以下示例
buildrun submit
命令运行名为helloworld-buildrun-private2
的构建运行,该运行从专用 Git 存储库https://github.com/myprivaterepo/builds
构建,并使用myregistry
注册表私钥将映像存储到us.icr.io/mynamespace/codeengine-helloworld
以访问此注册表。ibmcloud ce buildrun submit --name helloworld-buildrun-private2 --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry --source git@github.com:myprivaterepo/builds.git --context-dir /hello --strategy buildpacks --git-repo-secret myrepossh
- 此示例命令使用
buildpacks
策略和缺省medium
构建大小。 - 由于提供的 Git 存储库是专用的,因此访问需要 SSH 密钥。 SSH 私钥也用作 Git 存储库访问私钥。 因此,您指定的
--source
必须使用 SSH 协议,例如git@github.com:myprivaterepo/builds.git
。--source
的值不得使用http
或https
格式。 - 由于未使用
--commit
选项指定存储库的分支名称,因此 Code Engine 会自动使用指定存储库的缺省分支。 - Code Engine 根据
--source
选项的值自动确定源是驻留在存储库中还是驻留在本地工作站上。
下表概述了此示例中与
buildrun submit
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce buildrun submit
命令。命令描述 选项 描述 --name
构建运行的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母开头和结尾。
-名称必须不超过 63 个字符,并且可以包含小写字母数字字符和连字符 (-)。--image
映像注册表的位置。 位置的格式必须为 REGISTRY/NAMESPACE/REPOSITORY
或REGISTRY/NAMESPACE/REPOSITORY:TAG
,其中TAG
是可选的。 如果未指定TAG
,则默认为latest
。--registry-secret
创建容器映像时用于访问注册表的注册表私钥。 运行 secret create --format registry
命令以创建注册表密钥。 注册表私钥用于向专用注册表进行认证。--source
Git 存储库的 URL 或包含源代码的本地源的路径; 例如, git@github.com:myprivaterepo/builds.git
。--context-dir
存储库中包含 buildpack 文件或 Dockerfile 的目录。 如果 buildpack 文件或 Dockerfile 包含在子目录中,请指定此值。 --strategy
用于构建映像的策略。 有效值为 dockerfile
和buildpacks
。--git-repo-secret
SSH 私钥的名称,其中包含用于访问专用存储库的凭证,该专用存储库包含用于构建容器映像的源代码。 运行 secret create --ssh
命令以创建此私钥。 SSH 私钥也用作 Git 存储库访问私钥。 - 此示例命令使用
-
使用
buildrun get
命令可检查构建运行的状态。ibmcloud ce buildrun get --name helloworld-buildrun-private2
示例输出
Getting build run 'helloworld-buildrun-private2'... For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build. Run 'ibmcloud ce buildrun events -n helloworld-buildrun-private2' to get the system events of the build run. Run 'ibmcloud ce buildrun logs -f -n helloworld-buildrun-private2' to follow the logs of the build run. OK Name: helloworld-buildrun-private2 ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d10h Created: 2022-06-08T06:11:05-05:00 Build Type: git Summary: Succeeded Status: Succeeded Reason: All Steps have completed executing Source: Commit Branch: main Commit SHA: 946dd18f6e5a5474336786bc28d7dda93aec49c1 Commit Author: COMMIT_AUTHOR Image Digest: sha256:39c4a87bc43102c2ee88562072c57c135b8dcc5cc4a1104e1d782fe3acc5d5b6 Image: us.icr.io/mynamespace/codeengine-helloworld Registry Secret: myregistry Build Strategy: buildpacks-v3-medium Timeout: 10m0s Source: git@github.com:myprivaterepo/builds.git Context Directory: /hello Repo Secret: myrepossh
运行从本地目录中拉取源的单个构建
如果源位于本地工作站上,并且要使用单个命令来构建和输出容器映像,请使用 buildrun submit
命令来创建容器映像,而不创建可复用的构建配置。
对于构建输出,您可以选择 自动访问,并让 Code Engine 负责从源构建映像并将该映像存储在 IBM Cloud Container Registry中。 对于这种情况,您不需要指定注册表私钥或映像注册表的位置。 或者,您可以选择 用户提供的访问权,并指定注册表详细信息以及注册表私钥以访问注册表中的已构建映像。
提交从本地目录中提取代码的构建时,源代码将打包到归档文件中,并上载到 IBM Cloud Container Registry 实例。 请注意,只能将 IBM Cloud Container Registry 作为本地构建的目标。 将在与构建映像相同的名称空间中创建源映像。
您可以选择通过使用 .ceignore
文件来忽略源代码中的某些文件模式,该文件的行为类似于 .gitignore
文件。 例如,node.js 应用程序的 .ceignore
文件的条目可能包括 node_modules
和 .npm
。 有关要忽略的更多样本文件模式,请参阅 GitHub.gitignore 存储库。
有关用于运行单个构建的选项的完整列表,请参阅 ibmcloud ce buildrun submit
命令。
使用 CLI 运行单个构建 (具有本地源和对注册表的自动访问权)
在此 自动访问 方案中,Code Engine 从本地源构建映像,并通过将构建选项与 buildrun submit
命令配合使用,自动将该映像上载到具有自动访问权的 IBM Cloud Container Registry。
请参阅 设置映像注册表的权限,以获取有关设置 Code Engine 自动访问 Container Registry中的这些映像所需的许可权的更多信息。 在这种情况下,您不需要指定注册表私钥或映像注册表的位置。
准备工作
在使用本地源之前,请确保源位于本地工作站上的可访问位置。
此示例使用 https://github.com/IBM/CodeEngine
样本; 尤其是 helloworld
样本。
-
使用以下命令将
https://github.com/IBM/CodeEngine
样本源下载到本地工作站。git clone https://github.com/IBM/CodeEngine
-
更改为
CodeEngine\helloworld
目录。 -
从
CodeEngine\helloworld
目录中,运行构建以从本地工作站上的helloworld
源构建映像,并让 Code Engine 自动存储和访问该映像。 此命令会自动构建映像并将其推送到帐户中的 Container Registry 名称空间。 如果您没有现有的 Container Registry 名称空间,那么 Code Engine 会自动为您创建一个名称空间。 例如,以下buildrun submit
命令运行从本地源构建的名为buildrun-local-dockerfile
的构建运行。ibmcloud ce buildrun submit --name buildrun-local-dockerfile --source .
.
指示构建源位于当前工作目录中。- 此示例命令使用缺省
dockerfile
策略和缺省medium
构建大小。 - 通过不指定映像注册表或注册表私钥的位置,Code Engine 将构建输出推送到具有自动访问权的 IBM Cloud Container Registry。
- Code Engine 根据
--source
选项的值自动确定源是驻留在存储库中还是驻留在本地工作站上。
示例输出
Packaging files to upload from source path '.'... Submitting build run 'buildrun-local-dockerfile'... Creating image 'private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile'... Run 'ibmcloud ce buildrun get -n buildrun-local-dockerfile' to check the build run status. OK
下表概述了此示例中与
buildrun submit
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce buildrun submit
命令。命令描述 选项 描述 --name
构建运行的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母开头和结尾。
-名称必须不超过 63 个字符,并且可以包含小写字母数字字符和连字符 (-)。--source
包含源代码或 Git 存储库的 URL 的本地源的路径; 例如, .
。 - 此示例命令使用缺省
-
使用
buildrun get
命令可检查构建运行的状态。ibmcloud ce buildrun get --name buildrun-local-dockerfile
示例输出
Getting build run 'buildrun-local-dockerfile'... For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build. Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n buildrun-local-dockerfile' to get the system events of the build run. Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n buildrun-local-dockerfile' to follow the logs of the build run. OK Name: buildrun-local-dockerfile ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2022-06-07T16:09:34-04:00 Build Type: local Summary: Succeeded Status: Succeeded Reason: All Steps have completed executing Source: Source Image Digest: sha256:ced7abc34f018941145efb56e9a0c1fca99236653c2a05dd5b8b985928ff5f4f Image Digest: sha256:6459430ff49436494aa5e3103eaac98ad90ea50df88a2e14af6314fe88f3c952 Image: private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile Registry Secret: ce-auto-icr-private-us-south Build Strategy: dockerfile-medium Timeout: 10m0s Source Image: private.us.icr.io/ce--27fe9-glxo4k7nj7d/buildrun-buildrun-local-dockerfile-source Source Registry Secret: ce-auto-icr-private-us-south Dockerfile: Dockerfile
请注意为映像生成的名称,并且自动创建的注册表私钥的名称格式为
ce-auto-icr-private-<region>
。
使用 CLI 运行单个构建 (具有本地源和用户提供的对注册表的访问权)
在此 用户提供的访问权 方案中,Code Engine 从本地源构建映像,然后使用 buildrun submit
命令提供的注册表访问权将该映像上载到容器注册表。
准备工作
在使用本地源之前,请确保源位于本地工作站上的可访问位置。
此示例使用 https://github.com/IBM/CodeEngine
样本; 尤其是 helloworld
样本。
-
使用以下命令将
https://github.com/IBM/CodeEngine
样本源下载到本地工作站。git clone https://github.com/IBM/CodeEngine
-
更改为
CodeEngine\helloworld
目录。 -
从
CodeEngine\helloworld
目录中,运行构建运行以从本地工作站上的helloworld
源构建映像,并使用注册表私钥为构建输出指定映像注册表的位置。 此buildrun submit
命令自动构建映像并将其推送到您使用--image
选项指定的注册表。 指定--registry-secret
选项以访问注册表。ibmcloud ce buildrun submit --name buildrun-local-dockerfile2 --source . --image us.icr.io/mynamespace/codeengine-helloworld --registry-secret myregistry
.
指示构建源位于当前工作目录中。- Code Engine 根据
--source
选项的值自动确定源是驻留在存储库中还是驻留在本地工作站上。 - 在此示例中,该命令使用缺省
dockerfile
策略和缺省medium
构建大小。
下表概述了此示例中与
buildrun submit
命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅ibmcloud ce buildrun submit
命令。命令描述 选项 描述 --name
构建运行的名称。 请使用项目中唯一的名称。 此值是必需的。
-名称必须以小写字母开头和结尾。
-名称必须不超过 63 个字符,并且可以包含小写字母数字字符和连字符 (-)。--source
包含源代码或 Git 存储库的 URL 的本地源的路径; 例如, .
。--image
映像注册表的位置。 位置的格式必须为 REGISTRY/NAMESPACE/REPOSITORY
或REGISTRY/NAMESPACE/REPOSITORY:TAG
,其中TAG
是可选的。 如果未指定TAG
,则默认为latest
。--registry-secret
创建容器映像时用于访问注册表的注册表私钥。 运行 secret create --format registry
命令以创建注册表密钥。 注册表私钥用于向专用注册表进行认证。 - Code Engine 根据
-
使用
buildrun get
命令可检查构建运行的状态。ibmcloud ce buildrun get --name buildrun-local-dockerfile2
示例输出
Getting build run 'buildrun-local-dockerfile2'... For troubleshooting information visit: https://cloud.ibm.com/docs/codeengine?topic=codeengine-troubleshoot-build. Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun events -n buildrun-local-dockerfile2' to get the system events of the build run. Run 'C:\Program Files\IBM\Cloud\bin\ibmcloud.exe ce buildrun logs -f -n buildrun-local-dockerfile2' to follow the logs of the build run. OK Name: buildrun-local-dockerfile2 ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject Project ID: 01234567-abcd-abcd-abcd-abcdabcd1111 Age: 2d15h Created: 2022-06-07T16:34:42-04:00 Build Type: local Summary: Succeeded Status: Succeeded Reason: All Steps have completed executing Source: Source Image Digest: sha256:00fb80a8cdc17394ccae564efceb81f48c2cbcbd76afd0fb0b74019352933a63 Image Digest: sha256:25bc4bedccc1b34c98ccd92368246df3e61a7cf0cf4915a32f111669b60e2fea Image: us.icr.io/mynamespace/codeengine-helloworld Registry Secret: myregistry Build Strategy: dockerfile-medium Timeout: 10m0s Source Image: us.icr.io/mynamespace/codeengine-helloworld-source Source Registry Secret: myregistry Dockerfile: Dockerfile
构建的后续步骤
现在,您已从源构建容器映像,现在可以创建使用容器映像的应用程序或作业。 请参阅 部署应用程序 和 运行作业。
要查找更多代码示例吗? 请查看 IBM Cloud Code Engine GitHub 存储库的样本。