IBM Cloud Docs
使用 Git 创建工具链

使用 Git 创建工具链

您可以使用包含 Git Repos and Issue Tracking 或 GitHub 工具集成的模板作为起始点,以创建可将 Git 存储库 (repos) 添加到的工具链。 或者,您可以从空工具链或现有工具链开始,然后向其添加 Git Repos and Issue Tracking 或 GitHub 工具集成。

要查看哪些工具链模板包含 Git Repos and Issue Tracking 或 GitHub 工具集成,请参阅 工具链可用性,模板和教程

使用 Git Repos and Issue Tracking 或 GitHub 使用控制台从模板创建工具链

您可以使用模板作为起点来 创建工具链,该工具链包含 Git Repos and Issue Tracking 或 GitHub 工具集成。 进一步了解如何使用 IBM Cloud车库方法中的模板。

  1. 登录到 IBM Cloud

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

  3. 在 DevOps 仪表板的工具链页面上,单击创建工具链

  4. 创建工具链页面上,单击工具链模板。

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

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

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

  8. 单击创建。 此时将自动运行数个步骤,以设置工具链。 根据您选择的工具链模板,设置的工具集成有所不同。 例如,当您在 IBM Cloud Public 上创建微服务工具链时,会运行以下步骤:

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

    You can now distribute event notifications by using the Event Notifications tool integration. IBM Cloud Event Notifications is the preferred method for distributing notifications to PagerDuty and other communication channels such as Slack, email, SMS, push notifications, webhook, Microsoft® Teams, ServiceNow, and IBM Cloud Functions. 有关使用 Event Notifications的更多信息,请参阅 为工具链启用事件通知

使用 Git Repos and Issue Tracking 或使用 API 从模板创建工具链 GitHub

只能使用控制台根据模板创建工具链。 要查看使用控制台的步骤,请切换到 UI 指示信息。

有关如何使用 API 而不是使用模板创建工具链的更多信息,请参阅 使用 API 将 Git 工具集成添加到现有工具链

使用 Git Repos and Issue Tracking 或 GitHub with Terraform 从模板创建工具链

只能使用控制台根据模板创建工具链。 要查看使用控制台的步骤,请切换到 UI 指示信息。

有关如何使用 Terraform 而不是使用模板来创建工具链的更多信息,请参阅 将 Git 工具集成添加到具有 Terraform 的现有工具链

使用控制台将 Git 工具集成添加到现有工具链

您可以使用控制台向任何现有工具链添加 Git 工具集成。

  1. 登录到 IBM Cloud
  2. 在IBM Cloud控制台中,单击菜单图标汉堡包图标,然后选择资源列表
  3. 从“资源”列表中,展开 开发者工具 部分。
  4. 单击要向其添加 Git 工具集成的工具链,或者创建工具链。 有关创建工具链的信息,请参阅 创建工具链
  5. 在“工具链的概述”页面上,单击 添加工具,然后选择 GitHubGit Repos and Issue Tracking 以将其中任一工具集成添加到工具链。
  6. 根据您选择的 Git 工具集成,可以 配置 GitHub 工具集成,也可以配置 Git Repos and Issue Tracking 工具集成

使用 API 将 Git 工具集成添加到现有工具链

您可以使用 API 向任何现有工具链添加 Git 工具集成。

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

    export CD_TOOLCHAIN_AUTH_TYPE=iam && \
    export CD_TOOLCHAIN_APIKEY={iam_api_key} && \
    export CD_TOOLCHAIN_URL=https://api.{region}.devops.cloud.ibm.com/toolchain/v2
    
  2. 确定要向其添加 Git 工具集成的工具链的区域和标识

  3. 将 Git 工具集成添加到工具链。 以下示例显示如何添加链接到 github.com上的现有存储库的 Git 工具集成。 您还可以添加 Git 工具集成,其中包含有关创建,派生或克隆新存储库的指示信息。 你还可以为其他GitHub, GitLab,或 Bitbucket 服务器添加工具集成。

    curl -X POST \
      https://api.{region}.devops.cloud.ibm.com/toolchain/v2/toolchains/{toolchain_id}/tools \
      -H 'Authorization: Bearer {token}' \
      -H 'Accept: application/json` \
      -H 'Content-Type: application/json' \
        -d '{
        "tool_type_id": "githubconsolidated",
        "name": "{tool_integration_name}",
        "parameters": {
          "type": "link",
          "git_id": "github",
          "repo_url": "https://github.com/{git_org}/{git-repo}.git",
          "has_issues": true
        }
      }'
    
    const CdToolchainV2 = require('@ibm-cloud/continuous-delivery/cd-toolchain/v2');
    const toolchainService = CdToolchainV2.newInstance();
    ...
    (async() => {
       const gitToolModel = {
          toolchainId: {toolchain_id},
          toolTypeId: 'githubconsolidated',
          name: {tool_integration_name},
          parameters: {
             type: 'link',
             git_id: 'github',
             repo_url: 'https://github.com/{git_org}/{git-repo}.git',
             has_issues: true,
    
          }
       };
       const gitTool = await toolchainService.createTool(gitToolModel);
    })();
    
    import (
    	   "github.com/IBM/continuous-delivery-go-sdk/cdtoolchainv2"
    )
    ...
    toolchainClientOptions := &cdtoolchainv2.CdToolchainV2Options{}
    toolchainClient, err := cdtoolchainv2.NewCdToolchainV2UsingExternalConfig(toolchainClientOptions)
    createGitToolOptions := toolchainClient.NewCreateToolOptions({toolchain_id}, "githubconsolidated")
    gitParameters := map[string]interface{}{
     "type": "link",
     "git_id": "github",
     "repo_url": "https://github.com/{git_org}/{git-repo}.git",
     "has_issues": true,
    }
    createGitToolOptions.SetName({tool_integration_name})
    createGitToolOptions.SetParameters(gitParameters)
    gitTool, response, err := toolchainClient.CreateTool(createGitToolOptions)
    
    from ibm_continuous_delivery.cd_toolchain_v2 import CdToolchainV2
    ...
    toolchain_service = CdToolchainV2.new_instance()
    git_parameters = {
       "type": "link",
       "git_id": "github",
       "repo_url": "https://github.com/{git_org}/{git-repo}.git",
       "has_issues": True
    }
    git_tool = toolchain_service.create_tool(
       name = {tool_integration_ame},
       toolchain_id = {toolchain_id},
       tool_type_id = "githubconsolidated",
       parameters = git_parameters
    )
    
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.CdToolchain;
    import com.ibm.cloud.continuous_delivery.cd_toolchain.v2.model.*;
    ...
    CdToolchain toolchainService = CdToolchain.newInstance();
    HashMap<String, Object> gitParameters = new HashMap<>();
    gitParameters.put("type", "link");
    gitParameters.put("git_id", "github");
    gitParameters.put("repo_url", "https://github.com/{git_org}/{git-repo}.git");
    gitParameters.put("has_issues", true);
    CreateToolOptions createGitToolOptions = new CreateToolOptions.Builder()
       .name({tool_integration_name})
       .parameters(gitParameters)
       .toolchainId({toolchain_id})
       .toolTypeId("githubconsolidated")
       .build();
    Response<ToolchainToolPost> response = toolchainService.createTool(createGitToolOptions).execute();
    ToolchainToolPost gitTool = response.getResult();
    

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

用于添加Git工具与 API 集成的变量
变量 描述
{git_org} github.com 上包含存储库的组织。
{git_repo} github.com 上要集成到工具链中的存储库。
{iam_api_key} 您的 IAM API 密钥。
{region} 工具链所在的区域。 例如,us-south
{tool_integration_name} 工具集成的名称。
{toolchain_id} 要向其添加工具集成的工具链的标识。
{token} 有效的 IAM 不记名令牌。

有关每个 Git 工具集成 (包括您可以配置的其他参数) 的更多信息,请参阅以下主题:

将 Git 工具集成添加到具有 Terraform 的现有工具链

您可以将 Git 工具集成添加到具有 Terraform 的任何现有工具链。

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

  2. 找到包含要向其添加 Git 工具集成的工具链的资源块的 Terraform 文件 (例如,main.tf)。 在此文件中,添加配置以创建工具集成。

    如果工具链不存在,那么以下示例将创建工具链,然后使用 ibm_cd_toolchain_tool_githubconsolidated 资源添加链接到 github.com 上的现有存储库的 Git 工具集成。 您还可以添加 Git 工具集成,其中包含有关创建,派生或克隆新存储库的指示信息。 你还可以为其他GitHub, GitLab,或 Bitbucket 服务器添加工具集成。

    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
    }
    
    resource "ibm_cd_toolchain_tool_githubconsolidated" "my-github-tool-integration" {
      toolchain_id = ibm_cd_toolchain.cd_toolchain.id
      initialization {
        git_id = "github"
        repo_url = "https://github.com/my-org/my-repo.git"
        type = "link"
        auth_type = "pat"
        api_token = "<TOKEN>"
      }
      parameters {
        has_issues = true
      }
    }
    

    其中 <TOKEN> 表示属于 GitHub 帐户的个人访问令牌 (PAT),该帐户授予对目标存储库的访问权。

  3. 初始化 Terraform CLI。

    terraform init
    
  4. 创建 Terraform 执行计划。 此计划汇总了为将 DevOps Insights 工具集成添加到工具链而必须运行的所有操作。

    terraform plan
    
  5. 应用 Terraform 执行计划。 Terraform 将执行所有必需操作以将 DevOps Insights 工具集成添加到工具链。

    terraform apply
    

有关每个 Git 工具集成资源 (包括可配置的其他参数) 的更多信息,请参阅 Terraform Registry 文档中的参数参考详细信息:

有关将 Terraform 与 Continuous Delivery配合使用的更多信息,请参阅 为 Continuous Delivery