IBM Cloud Docs
Git によるツールチェーンの作成

Git によるツールチェーンの作成

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 でテンプレートからツールチェーンを作成する

テンプレートを出発点として、Git Repos and Issue TrackingまたはGitHubツール統合のいずれかを含む ツールチェーンを作成することができます。 IBM CloudGarage Method のテンプレートの使用方法については、こちらをご覧ください。

  1. IBM Cloud にログインします。

  2. IBM Cloudコンソールから、メニューアイコンハンバーガーアイコン>Platform Automation>Toolchains をクリックします。

  3. DevOps ダッシュボードの**「ツールチェーン」ページで、「ツールチェーンの作成 (Create a Toolchain)」**をクリックします。

  4. **「ツールチェーンの作成」**ページで、ツールチェーン・テンプレートをクリックします。

  5. 作成しようとしているツールチェーンの図を確認します。 この図は、ツールチェーン内の各ツール統合とそのライフサイクル・フェーズを示しています。

  6. ツールチェーン設定のデフォルト情報を確認します。

    • ツールチェーンの名前は、そのツールチェーンを IBM Cloud 内で識別するためのものです。 別の名前を使用する場合は、ツールチェーンの名前を変更します。
    • ツールチェーンを作成する対象のリージョン。 別のリージョンを利用する場合は、選択可能なリージョンのリストから選んでください。
    • ツールチェーンを作成するリソース・グループ。 別のリソース・グループを使用したい場合は、使用可能なリソース・グループのリストからそのリソース・グループを選択します。
    • GitHub、GitLab などのソース・リポジトリーのプロバイダー。 別のソース・プロバイダーを利用する場合は、使用可能なリポジトリーのリストから選んでください。
  7. 「ツール統合 (Tool Integrations)」セクションで、ツールチェーンに構成する各ツール統合を選択します。 ツール統合の構成について詳しくは、ツール統合の構成を参照してください。

  8. 「作成」 をクリックします。 以下のようにいくつかのステップが自動的に実行されて、ツールチェーンがセットアップされます。 セットアップされるツール統合は、選択したツールチェーン・テンプレートによって異なります。 例えば、Microservices ツールチェーンを IBM Cloud Public で作成する場合、以下のステップが実行されます。

    • ツールチェーンが作成されます。
    • Delivery Pipeline を構成した場合は、パイプラインが作成されて起動します。
    • Sauce Labs を構成した場合は、パイプラインに Sauce Labs テスト・ジョブを追加するようにツールチェーンがセットアップされます。
    • Event Notificationsを設定した場合、ツールチェーンは指定したEvent Notificationsサービスにイベント通知を送信するように設定されます。
    • PagerDuty を構成した場合は、指定した PagerDuty サービスにアラート通知を送信するようにツールチェーンがセットアップされます。
    • Slack を構成した場合は、指定した Slack チャネルにデプロイメント状況に関する通知を送信するようにツールチェーンがセットアップされます。
    • GitHub などのソース・コード・ツール統合を構成した場合、サンプル GitHub リポジトリーが GitHub アカウントに複製されます。

    イベント通知を Event Notifications ツール統合を使用して配信できるようになりました。IBM Cloud Event Notificationsは、PagerDuty、Slack、メール、SMS、プッシュ通知、Webhook、Microsoft® Teams、ServiceNow, IBMなどの通信チャネルに通知を配信するのに適した方法です。Cloud Functionsなどです。 Event Notificationsの使用について詳しくは、 ツールチェーンのイベント通知の有効化 を参照してください。

Git Repos and Issue Tracking または GitHub を使用した API によるテンプレートからのツールチェーンの作成

テンプレートからツールチェーンを作成するには、コンソールを使用する必要があります。 コンソールを使用するためのステップを表示するには、 UI の説明に切り替えます。

テンプレートを使用する代わりに API を使用してツールチェーンを作成する方法について詳しくは、 API を使用した既存のツールチェーンへの Git ツール統合の追加 を参照してください。

テンプレートからGit Repos and Issue TrackingまたはTerraformを使ったGitHubでツールチェーンを作成する

テンプレートからツールチェーンを作成するには、コンソールを使用する必要があります。 コンソールを使用するためのステップを表示するには、 UI の説明に切り替えます。

テンプレートを使用する代わりに Terraform を使用してツールチェーンを作成する方法について詳しくは、 Terraform を使用した既存のツールチェーンへの Git ツール統合の追加 を参照してください。

コンソールを使用した既存のツールチェーンへの Git ツール統合の追加

コンソールを使用して、 Git ツール統合を既存のツールチェーンに追加できます。

  1. IBM Cloud にログインします。
  2. IBM Cloudコンソールから、メニューアイコンのハンバーガーアイコン をクリックし、リソースリストを選択します。
  3. 「リソース」リストから、 「開発者ツール」 セクションを展開します。
  4. Git ツール統合を追加したいツールチェーンをクリックするか、ツールチェーンを作成します。 ツールチェーンの作成については、 ツールチェーンの作成 を参照してください。
  5. ToolchainのOverviewページで、Add Tool をクリックし、GitHub または Git Repos and Issue Tracking を選択して、これらのツール統合のいずれかをツールチェーンに追加します。
  6. 選択した Git ツール統合に応じて、 GitHub ツール統合を構成する か、 Git Repos and Issue Tracking ツール統合を構成する ことができます。

API を使用した既存のツールチェーンへの Git ツール統合の追加

Git ツール統合は、API を使用して既存のツールチェーンに追加できます。

  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 ツール統合の追加先となる ツールチェーンのリージョンと ID を決定します

  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();
    

以下の表では、前のステップで使用された各変数をリストして説明します。

APIとのGitツール統合を追加するための変数
変数 説明
{git_org} リポジトリーが含まれている github.com 上の組織。
{git_repo} ツールチェーンに統合するための github.com 上のリポジトリー。
{iam_api_key} IAM API キー。
{region} ツールチェーンが存在する領域。 例えば、us-south です。
{tool_integration_name} ツール統合の名前です。
{toolchain_id} ツール統合の追加先となるツールチェーンの ID。
{token} 有効な IAM ベアラ・トークン。

Git ツールの各統合 (構成可能な追加パラメーターを含む) について詳しくは、以下のトピックを参照してください。

Terraform を使用した既存のツールチェーンへの Git ツール統合の追加

Terraform を使用して、既存のツールチェーンに Git ツール統合を追加できます。

  1. Terraform CLI をインストールし、Terraform 用の IBM Cloud Provider プラグインを構成するために、Terraform on IBM Cloud 入門のチュートリアルに従ってください。

  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 レジストリーの資料で引数参照の詳細を参照してください。

Continuous Deliveryでの Terraform の使用について詳しくは、 Continuous Delivery を参照してください。