IBM Cloud Docs
使用独立构建命令 (CLI) 构建容器映像

使用独立构建命令 (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中的这些映像所需的许可权的更多信息。

准备工作

  1. 运行构建以从公共 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 包含在子目录中,请指定此值。
  2. 使用 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 存储库源构建映像,然后使用单个构建命令提供的注册表访问权将该映像上载到容器注册表。

准备工作

  1. 运行构建以从公共 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/REPOSITORYREGISTRY/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 包含在子目录中,请指定此值。
  2. 使用 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中的这些映像所需的许可权的更多信息。

准备工作

  1. 运行构建以从专用存储库构建映像,并让 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 的值不得使用 httphttps 格式。
    • 由于未使用 --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 用于构建映像的策略。 有效值为 dockerfilebuildpacks
    --git-repo-secret SSH 私钥的名称,其中包含用于访问专用存储库的凭证,该专用存储库包含用于构建容器映像的源代码。 运行 secret create --ssh 命令以创建此私钥。 SSH 私钥也用作 Git 存储库访问私钥。
  2. 使用 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 存储库私钥从专用存储库源构建映像,然后使用您通过单个构建命令提供的注册表访问权将该映像上载到容器注册表。

准备工作

  1. 运行构建以从专用存储库构建映像,并使用注册表私钥为构建输出指定映像注册表的位置。 以下示例 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 的值不得使用 httphttps 格式。
    • 由于未使用 --commit 选项指定存储库的分支名称,因此 Code Engine 会自动使用指定存储库的缺省分支。
    • Code Engine 根据 --source 选项的值自动确定源是驻留在存储库中还是驻留在本地工作站上。

    下表概述了此示例中与 buildrun submit 命令配合使用的选项。 有关该命令及其选项的更多信息,请参阅 ibmcloud ce buildrun submit 命令。

    命令描述
    选项 描述
    --name 构建运行的名称。 请使用项目中唯一的名称。 此值是必需的。
    -名称必须以小写字母开头和结尾。
    -名称必须不超过 63 个字符,并且可以包含小写字母数字字符和连字符 (-)。
    --image 映像注册表的位置。 位置的格式必须为 REGISTRY/NAMESPACE/REPOSITORYREGISTRY/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 用于构建映像的策略。 有效值为 dockerfilebuildpacks
    --git-repo-secret SSH 私钥的名称,其中包含用于访问专用存储库的凭证,该专用存储库包含用于构建容器映像的源代码。 运行 secret create --ssh 命令以创建此私钥。 SSH 私钥也用作 Git 存储库访问私钥。
  2. 使用 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 样本。

  1. 使用以下命令将 https://github.com/IBM/CodeEngine 样本源下载到本地工作站。

    git clone https://github.com/IBM/CodeEngine
    
  2. 更改为 CodeEngine\helloworld 目录。

  3. 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 的本地源的路径; 例如,.
  4. 使用 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 样本。

  1. 使用以下命令将 https://github.com/IBM/CodeEngine 样本源下载到本地工作站。

    git clone https://github.com/IBM/CodeEngine
    
  2. 更改为 CodeEngine\helloworld 目录。

  3. 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/REPOSITORYREGISTRY/NAMESPACE/REPOSITORY:TAG,其中 TAG 是可选的。 如果未指定 TAG,则默认为 latest
    --registry-secret 创建容器映像时用于访问注册表的注册表私钥。 运行 secret create --format registry 命令以创建注册表密钥。 注册表私钥用于向专用注册表进行认证。
  4. 使用 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 存储库的样本