IBM Cloud Docs
创建从公共存储库中提取源的构建配置

创建从公共存储库中提取源的构建配置

如果源位于公共存储库中,请使用包含有关从公共存储库中提取源的位置的信息的设置来创建构建配置。 对于构建输出,您可以选择指定注册表详细信息以及注册表私钥,以访问注册表中的已构建映像。 或者,您可以选择让 Code Engine 负责从源构建映像,并将该映像存储在 IBM Cloud Container Registry中。 对于这种情况,您不需要指定注册表私钥或映像注册表的位置。

创建构建配置不会创建映像,但会创建用于构建映像的配置。 然后,必须运行引用构建配置的构建以创建映像。 在运行构建之前,不会验证构建配置或使用构建配置来创建映像。 构建配置支持映像的多个后续构建,例如,将更改应用于源存储库时。

您可以选择通过使用 .ceignore 文件来忽略源代码中的某些文件模式,该文件的行为与 .gitignore 文件类似。 例如,node.js 应用程序的 .ceignore 文件的条目可能包括 node_modules.npm。 有关要忽略的更多样本文件模式,请参阅 GitHub.gitignore 存储库

从控制台创建构建配置 (公共存储库)

  1. 转至 Code Engine 仪表板

  2. 选择在其中添加了容器注册表的项目。

  3. 在项目页面中,单击 映像构建

  4. 映像构建 选项卡中,单击 创建。 此时将打开 指定构建详细信息 侧面板,您可以在其中输入构建的详细信息。

  5. 部分中,输入构建的名称,源存储库的 URL 以及代码存储库访问权。

    • 如果您的代码位于公共存储库中,请使用 HTTPS URL 并选择 以进行代码存储库访问。 HTTPS URL 的示例为 https://github.com/IBM/CodeEngine
    • 如果您的代码位于专用存储库中,请对代码存储库 URL 使用 SSH URL,然后选择现有代码存储库访问权的名称或 创建代码存储库访问权。 SSH URL 的示例为 git@github.com:IBM/CodeEngine.git
    • (可选) 选择源分支名称。 如果未提供分支名称,并且将该字段留空,那么 Code Engine 将自动使用指定存储库的缺省分支。 您可以输入任何其他分支名称,标记或落实标识。

    单击下一步以继续。

  6. 策略 部分中,选择要使用的 策略

    • 如果选择 Dockerfile,那么还可以指定 Dockerfile 的备用路径。
    • 构建资源下选择构建的大小。

    单击下一步以继续。

  7. 输出 部分中,输入容器映像的详细信息。

    • 选择现有注册表私钥,或者单击 创建注册表私钥 以添加新的注册表私钥。
    • 如果要将映像构建到帐户中的 Container Registry 实例,那么可以选择 Code Engine managed secret 并 Code Engine 为您创建和管理私钥。
    • 然后,选择要构建的映像的名称空间,存储库和标记。 您可以选择 Code Engine tp 在 Container Registry 中创建和管理名称空间。
    • 如果您的映像存在于 Container Registry中,那么可以从现有映像中进行选择,或者输入新的存储库或标记。
  8. 单击 完成 以完成构建的创建。

创建构建配置后,必须 运行构建 以创建映像文件。 创建映像文件后,可以 部署应用程序 或使用新构建的映像文件 运行作业

使用 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中的这些映像所需的许可权的更多信息。

准备工作

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

准备工作

  1. 创建构建配置以从公共 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/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. 使用 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) 并且该私钥不存在,请参阅 访问容器注册表。 有关构建的更多信息,请查看 故障诊断技巧