创建工具链

DevOps Insights 该服务将于 2026 年 8 月 31 日停止提供并终止。Continuous Delivery 将于 2027 年 2 月 12 日在以下区域停止提供:au-sydca-torus-east。 Code Risk Analyzer 也将于该日期在所有地区停止提供服务。 如果某个区域未实际使用这些功能,该区域内的相关功能可能会提前停用,并停止接受新实例。 了解更多

工具链是支持开发、部署和操作任务的一组工具集成。 工具链的整体能力大于其各个单独工具集成的总和。

IBM Cloud®上提供了开放式工具链。 创建工具链的方式有多种:使用模板创建工具链、为应用程序创建工具链、使用 HTTP API 或 SDK 创建工具链,或使用 Terraform 创建工具链。

每个工具链都与一个特定的资源组相关联。 对工具链资源或包含该资源的资源组具有 Identity and Access Management (IAM) 查看者许可权的任何用户都可以访问该工具链。 有关资源组中工具链访问控制的更多信息,请参阅 《管理用户对资源组中工具链的访问权限》

在 IBM Cloud Public 中,根据您所使用的模板或工具链,工具链可能包括已经填充了应用程序入门模板代码的 GitHub 或 Git 存储库和预配置的 Delivery Pipeline。 当您将更改推送到工具链的存储库时,Delivery Pipeline 会自动构建应用程序,并将其部署到 IBM Cloud。

要查看哪些工具链和工具集成可用,请参阅工具链可用性、模板和教程

使用控制台从模板创建工具链

您可以使用一个模板作为起点,通过 创建工具链 获取包含特定工具集成集的模板。 根据使用的模板,您可以创建具有一组特定工具集成的工具链,或者创建可以向其中添加工具集成的空工具链。 了解有关如何使用 IBM Cloud Garage Method中的模板的更多信息。

  1. 登录到 IBM Cloud

  2. 从IBM Cloud控制台,单击菜单图标汉堡包图标>平台自动化>工具链

  3. 在“工具链”页面,单击“创建工具链”。

  4. 在“创建工具链”页面上,单击一个工具链模板。

  5. 复查您要创建的工具链的图。 该图按生命周期阶段显示工具链中的每一个工具集成。

    有一些工具链模板具有工具集成的多个实例。 例如,IBM Cloud Public 上的“使用 Kubernetes 和 Helm 开发和测试微服务”工具链模板包含四个 GitHub 实例和四个 Delivery Pipeline 实例。

    以下图像中的图是示例。 创建工具链时,该图显示属于工具链的每一个工具集成。

    工具链图*" caption-side="bottom"}链{: caption="*

  6. 复查工具链设置的缺省信息:

    • 工具链的名称在 IBM Cloud 中起到标识符的作用。 如果要使用其他名称,请更改工具链的名称。
    • 要在其中创建工具链的区域。 如果要使用其他区域,请从可用区域列表中选择该区域。
    • 用于创建工具链的资源组。 如果您想使用其他资源组,请从可用资源组列表中选择一个。
    • 源存储库的提供者,例如 GitHub、GitLab 或 Bitbucket。 如果要使用其他源提供者,请从可用存储库列表中进行选择。
  7. 在“工具集成”部分中,选择要为工具链配置的每一个工具集成。 有些工具集成无需进行配置。 有关配置工具集成的更多信息,请参阅配置工具集成

    构成工具链的许多工具集成都需要一个秘密才能与 Continuous Delivery 服务进行身份验证。

    私钥是可以密码,认证令牌,API 密钥或证书形式提供的凭证。 例如,将 Delivery Pipeline 工具集成添加到工具链时,必须以 API 密钥的形式提供私钥。

    a. 在“工具集成”部分中,单击 Delivery Pipeline

    b. 单击 新建 以创建 IBM Cloud® API 密钥。

    c. 单击 确定 以应用新的 API 密钥。

    每个用户最多可以有 20 个 API 密钥。

    d. 单击 确定 以创建 API 密钥而不保存密钥的安全副本。

    e. 要安全地保存 API 密钥,以便您可以在其他工具链工作流程中再次使用该 API 密钥:

    • 选中 将此密钥保存在密钥库中以供复用 复选框以与 Key Protect 或 Secrets Manager 密钥库集成。
    • 如果您没有 Key Protect 或 Secrets Manager的现有实例,请指定该实例的名称和私钥。
    • 单击 确定 以应用新的 API 密钥。

    f. 要验证是否已成功创建 Key Protect 或 Secrets Manager 实例,请转至 IBM Cloud® 资源列表 并展开 服务 折叠标记。 要查看 API 密钥,请从菜单栏中单击 管理> 访问权 (IAM),然后选择 IBM Cloud® API 密钥

    (例如, 您创建并复制到密钥项目的 API 密钥现在可在“创建工具链”页面上使用。 需要私钥的任何工具集成都会显示一个密钥图标。 单击密钥图标以打开“私钥选取器”对话框,以从一个或多个 Key Protect 或 Secrets Manager 实例检索私钥。

  8. 单击创建。 此时将自动运行数个步骤,以设置工具链。 根据您选择的工具链模板,设置的工具集成有所不同。 例如,在 IBM Cloud Public 上创建“使用 Kubernetes 和 Helm”工具链开发和测试微服务时,将运行以下步骤:

    • 将创建工具链。
    • 如果已配置 Delivery Pipeline,那么会创建并触发管道。
    • 如果您已配置 Event Notifications,则工具链将设置为向您指定的 Event Notifications 服务发送事件通知。
    • 如果已配置 Sauce Labs,那么会设置工具链以向管道添加 Sauce Labs 测试作业。
    • 如果已配置 PagerDuty,那么会设置工具链,以向指定的 PagerDuty 服务发送警报通知。
    • 如果已配置 Slack,那么会设置工具链,以向指定的 Slack 通道发送有关部署状态的通知。
    • 如果已配置源代码工具集成(如 GitHub),那么样本 GitHub 存储库会克隆到 GitHub 帐户。

    现在,您可以通过使用 Event NotificationsIBM Cloud Event Notifications 是向 PagerDuty 和其他通信渠道(如 Slack、电子邮件、短信、推送通知、webhook、Microsoft® Teams、ServiceNow, 和 IBM Cloud Functions )分发通知的首选方法。 有关使用 Event Notifications 的更多信息,请参阅 为工具链启用事件通知

使用控制台从应用程序创建工具链

可以通过应用程序来创建工具链。 工具链可以支持持续开发、部署、监视等操作,并且与应用程序相关联。 每个应用程序可以与一个工具链相关联。 当您将更改推送到工具链的 GitHub 存储库时,管道会自动构建和部署应用程序。

  1. 如果您使用 IBM Cloud Public创建了应用程序,则该应用程序已配置为从一个新的 GitHub 仓库进行持续交付,该仓库中已包含应用程序的启动代码。

  2. 在工具链配置页面上,复查您即将创建的工具链的图。 该图按生命周期阶段显示工具链中的每一个工具集成。

  3. 复查工具链设置的缺省信息。 工具链的名称在 IBM Cloud 中起到标识符的作用。 如果要使用其他名称,请更改工具链的名称。

  4. 在“工具集成”部分中,选择要为工具链配置的每一个工具集成。 有些工具集成无需进行配置。 有关配置工具集成的更多信息,请参阅配置工具集成

  5. 单击创建。 此时将自动运行数个步骤,以设置工具链。 例如,当您在 IBM Cloud Public 上通过应用程序创建工具链时,会运行以下步骤:

    • 将创建工具链。
    • 如果已配置 Delivery Pipeline,那么会创建并触发管道。
    • 如果已配置 GitHub,那么样本 GitHub 存储库会克隆到 GitHub 帐户。

使用 API 创建工具链

  1. 获取 IAM 不记名令牌。 或者,如果您正在使用 SDK,请 获取 IAM API 密钥,并使用环境变量设置客户机选项。

    export CD_TOOLCHAIN_AUTH_TYPE=iam && \
    export CD_TOOLCHAIN_APIKEY={iam_api_key} && \
    export CD_TOOLCHAIN_URL={base_url}
    
  2. 查找要在其中创建工具链的资源组的标识

  3. 选择要在其中创建工具链的区域。

  4. 创建工具链的实例。

    curl -X POST \
      "{base_url}/toolchains" \
      -H 'Authorization: Bearer {token}' \
      -H 'Content-Type: application/json' \
        -d '{
        "name": "{toolchain_name}",
        "resource_group_id": "{resource_group_id}"
      }'
    
    const CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');
    const toolchainService = CdToolchainV2.newInstance();
    ...
    (async() => {
       const toolchainPrototypeModel = {
          description: {toolchain_description},
          name: {toolchain_name},
          resourceGroupId: {resource_group_id}
       };
       const response = await toolchainService.createToolchain(toolchainPrototypeModel);
    })();
    
    import (
    	   "github.com/IBM/continuous-delivery-go-sdk/cdtoolchainv2"
    )
    ...
    toolchainClientOptions := &cdtoolchainv2.CdToolchainV2Options{}
    toolchainClient, err := cdtoolchainv2.NewCdToolchainV2UsingExternalConfig(toolchainClientOptions)
    createToolchainOptions := toolchainClient.NewCreateToolchainOptions({toolchain_name}, {resource_group_id})
    createToolchainOptions.SetDescription({toolchain_description})
    toolchain, response, err := toolchainClient.CreateToolchain(createToolchainOptions)
    
    from ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2
    ...
    toolchain_service = CdToolchainV2.new_instance()
    toolchain = toolchain_service.create_toolchain(
       description = {toolchain_description},
       name = {toolchain_name},
       resource_group_id = {resource_group_id}
    )
    
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.CdToolchain;
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.model.*;
    ...
    CdToolchain toolchainService = CdToolchain.newInstance();
    CreateToolchainOptions createToolchainOptions = new CreateToolchainOptions.Builder()
       .description({toolchain_description})
       .name({toolchain_name})
       .resourceGroupId({resource_group_id})
       .build();
    Response<ToolchainPost> response = toolchainService.createToolchain(createToolchainOptions).execute();
    ToolchainPost toolchain = response.getResult();
    

下表列出并描述了先前步骤中使用的每个变量。

使用应用程序接口配置工具链的变量
变量 描述
{base_url} 工具链应用程序接口端点 URL,例如 https://api.us-south.devops.cloud.ibm.com/toolchain/v2。 有关该端点 URL 的更多信息,包括值列表,请参阅 端点 URL
{iam_api_key} 您的 IAM API 密钥。
{resource_group_id} 要在其中供应工具链的资源组的标识。 要查找可用资源组的标识,请运行 ibmcloud resource groups
{token} 一个有效的 IAM 承载令牌。
{toolchain_description} 工具链的描述。
{toolchain_name} 为您的工具链命名。

有关使用 API 创建工具链的更多信息,请参阅 IBM Cloud API 文档中的 创建工具链

使用 Terraform 创建工具链

  1. 要安装 Terraform CLI 并为 Terraform 配置 IBM Cloud 提供程序插件,请遵循 IBM Cloud® 上的 Terraform 入门 的教程。

  2. 创建一个名为 main.tf 的Terraform配置文件。 在此文件中,添加配置以使用 HashiCorp 配置语言创建工具链。 有关使用此配置语言的更多信息,请参阅 Terraform 文档

    以下示例使用 ibm_cd_toolchain 资源创建工具链。

    data "ibm_resource_group" "group" {
      name = "default"
    }
    resource "ibm_cd_toolchain" "cd_toolchain" {
      name              = "my toolchain"
      resource_group_id = data.ibm_resource_group.group.id
    }
    

    有关 ibm_cd_toolchain 的更多信息,请参阅 Terraform Registry 文档中的参数参考详细信息。

  3. 初始化 Terraform CLI。

    terraform init
    
  4. 创建 Terraform 执行计划。 此计划汇总了为创建工具链而必须运行的所有操作。

    terraform plan
    
  5. 应用 Terraform 执行计划。 Terraform 将执行所有必需的操作来创建工具链。

    terraform apply
    

查看工具链

您可以使用控制台,CLI,API 或 Terraform 来查看工具链。

使用控制台查看工具链

配置工具链及其工具集成之后,您可以查看工具链的可视化表示。

您可以在应用的“详细信息”页面中点击工具链名称,查看该应用的工具链。

  1. 从IBM Cloud控制台,单击菜单图标汉堡包图标>平台自动化>工具链

  2. 在“工具链”页面上,选择 资源组位置。 将显示所选资源组和位置中包含的所有工具链。 单击想要查看的工具链以打开其“概述”页面。 或者,在您应用的“应用详情”页面上,点击工具链名称。

  3. 要访问工具链中的工具集成,请转至相应的卡 (例如 Delivery pipeline),然后单击工具集成。

    您还可以在 资源列表开发者工具 类别中找到工具链。 缺省情况下,“资源”列表显示跨多个资源组和位置的工具链和其他资源。

    如果你有不止一个 GitHub 或 Git repo,你可能会在 Repositories(版本库 )卡中有多个相同工具集成的实例,因为每个版本库都是单独表示的。 如果您拥有多个管道,可能会出现同一工具集成的多个实例,因为每个管道都是单独表示的。 例如,当您创建“使用 Kubernetes 和 Helm 开发和测试微服务”工具链时,每个微服务都有自己的 GitHub 或 Git repo 和自己的管道。

从 CLI 查看工具链

命令行界面 (CLI) 工具链视图取决于目标资源组。 使用以下命令来指定或更改目标资源组。

  • 要查看当前目标资源组,请运行以下命令:
ibmcloud target
  • 如果未设置资源组,或者您想更改资源组,请运行以下命令:
ibmcloud target -g [RESOURCE-GROUP]
  • 要查看目标资源组中的工具链,请运行以下命令:
ibmcloud dev toolchains
  • 要查看特定工具链的详细信息,请运行以下命令:
ibmcloud dev toolchain-get [TOOLCHAIN-NAME]
  • 要在浏览器中查看工具链详细信息,请运行以下命令:
ibmcloud dev toolchain-open [TOOLCHAIN-NAME]

使用 API 获取工具链

  1. 获取 IAM 不记名令牌。 或者,如果您正在使用 SDK,请 获取 IAM API 密钥,并使用环境变量设置客户机选项。

    export CD_TOOLCHAIN_AUTH_TYPE=iam && \
    export CD_TOOLCHAIN_APIKEY={iam_api_key} && \
    export CD_TOOLCHAIN_URL={base_url}
    
  2. 查找工具链所在的资源组的标识

  3. 选择工具链所在的区域。

  4. 获取资源组中的工具链列表。

    curl -X GET \
      "{base_url}/toolchains?resource_group_id={resource_group_id}" \
      -H 'Authorization: Bearer {token}' \
      -H 'Accept: application/json'
    
    const CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');
    const toolchainService = CdToolchainV2.newInstance();
    ...
    (async() => {
       const response = await toolchainService.listToolchains({
          resourceGroupId: {resource_group_id}
       });
    })();
    
    import (
    	   "github.com/IBM/continuous-delivery-go-sdk/cdtoolchainv2"
    )
    ...
    toolchainClientOptions := &cdtoolchainv2.CdToolchainV2Options{}
    toolchainClient, err := cdtoolchainv2.NewCdToolchainV2UsingExternalConfig(toolchainClientOptions)
    listToolchainsOptions := toolchainClient.NewListToolchainsOptions({resource_group_id})
    toolchains, response, err := toolchainClient.ListToolchains(listToolchainsOptions)
    
    from ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2
    ...
    toolchainService = CdToolchainV2.new_instance()
    toolchains = toolchainService.list_toolchains(
       resource_group_id = {resource_group_id}
    )
    
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.CdToolchain;
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.model.*;
    ...
    CdToolchain toolchainService = CdToolchain.newInstance();
    ListToolchainsOptions listToolchainsOptions = new ListToolchainsOptions.Builder()
       .resourceGroupId({resource_group_id})
       .build();
    Response<ToolchainCollection> response = toolchainService.listToolchains(listToolchainsOptions).execute();
    ToolchainCollection toolchains = response.getResult();
    
  5. 获取特定工具链。

    curl -X GET \
      {base_url}/toolchains/{toolchain_id} \
      -H 'Authorization: Bearer {token}' \
      -H 'Accept: application/json'
    
    const CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');
    const toolchainService = CdToolchainV2.newInstance();
    ...
    (async() => {
       const response = await toolchainService.getToolchainById({
          toolchainId: {toolchain_id}
       });
    })();
    
    getToolchainByIDOptions := toolchainClient.NewGetToolchainByIDOptions({toolchain_id})
    toolchain, response, err := toolchainClient.GetToolchainByID(getToolchainByIDOptions)
    
    toolchain = toolchainService.get_toolchain_by_id(
       toolchain_id = {toolchain_id}
    )
    
    GetToolchainByIdOptions getToolchainByIdOptions = new GetToolchainByIdOptions.Builder()
       .toolchainId({toolchain_id})
       .build();
    Response<Toolchain> response = toolchainService.getToolchainById(getToolchainByIdOptions).execute();
    Toolchain toolchain = response.getResult();
    

下表列出并描述了先前步骤中使用的每个变量。

使用应用程序接口查看工具链的变量
变量 描述
{base_url} 工具链应用程序接口端点 URL,例如 https://api.us-south.devops.cloud.ibm.com/toolchain/v2。 有关该端点 URL 的更多信息,包括值列表,请参阅 端点 URL
{resource_group_id} 工具链所在的资源组的标识。 要查找可用资源组的标识,请运行 ibmcloud resource groups
{token} 一个有效的 IAM 承载令牌。
{toolchain_id} 工具链的标识。

有关使用 API 列出工具链以及使用 API 获取工具链的更多信息,请参阅 IBM Cloud API 文档中的 获取工具链列表获取工具链

使用 Terraform 查看工具链

  1. 找到包含现有工具链的 resource 块的 Terraform 文件 (例如,main.tf)。

  2. 如果 output 块尚未包含块,请将其添加到 Terraform 文件中。

    以下示例中的 resource 描述了现有工具链。 output 块指示 Terraform 输出工具链资源的属性。

    data "ibm_resource_group" "group" {
      name = "default"
    }
    resource "ibm_cd_toolchain" "cd_toolchain" {
      name              = "my toolchain"
      resource_group_id = data.ibm_resource_group.group.id
    }
    output "cd_toolchain_attributes" {
      value = ibm_cd_toolchain.cd_toolchain
    }
    

    有关 ibm_cd_toolchain 的更多信息,请参阅 Terraform Registry 文档中的参数参考详细信息。

  3. 初始化 Terraform CLI。

    terraform init
    
  4. 使用 refresh-only 选项应用 Terraform 执行计划。 Terraform 将刷新其状态并显示工具链资源的属性。

    terraform apply -refresh-only -auto-approve