ツールチェーンの作成
ツールチェーンは、開発、デプロイメント、運用の作業をサポートするツール統合のセットです。 ツールチェーンの集合的な機能は、個々のツール統合の機能を合わせたものより優れています。
オープン・ツールチェーンは、IBM Cloud® で使用可能です。 ツールチェーンはいくつかの方法で作成できます。テンプレートを使用してツールチェーンを作成する方法、アプリのツールチェーンを作成する方法、HTTP API または SDK を使用してツールチェーンを作成する方法、または Terraform を使用してツールチェーンを作成する方法です。
各ツールチェーンは、特定のリソース・グループに関連付けられます。 ツールチェーン・リソースまたはそれを含むリソース・グループに対する ID およびアクセス管理 (IAM) ビューアー権限を持つすべてのユーザーが、ツールチェーンにアクセスできます。 リソース・グループ内のツールチェーンのアクセス制御について詳しくは、リソース・グループ内のツールチェーンへのユーザー・アクセスの管理を参照してください。
IBM Cloud Public では、使用するテンプレートやツールチェーンに応じて、アプリケーションの開始コードと事前構成されたデリバリー・パイプラインが取り込まれた GitHub または GitHub リポジトリーがツールチェーンに含まれることがあります。 ツールチェーンの GitHub または GitHub リポジトリーに変更をプッシュすると、デリバリー・パイプラインは自動的にアプリをビルドして IBM Cloud にデプロイします。
利用可能なツールチェーンおよびツール統合を確認するには、『ツールチェーンの使用可能状況、テンプレート、チュートリアル』を参照してください。
コンソールを使用したテンプレートからのツールチェーンの作成
テンプレートを開始点として使用して、特定のツール統合のセットを含む ツールチェーンを作成 できます。 使用するテンプレートに応じて、特定のツールの統合があるツールチェーンを作成するか、空のツールチェーンを作成してそこにツール統合を追加することができます。 テンプレートの使用方法について詳しくは、 IBM Cloud Garage Methodを参照してください。
-
IBM Cloud にログインします。
-
IBM Cloud コンソールで、メニュー・アイコン をクリックし、**「DevOps」**を選択します。
-
**「ツールチェーン」ページで、「ツールチェーンの作成」**をクリックします。
-
**「ツールチェーンの作成」**ページで、ツールチェーン・テンプレートをクリックします。
-
作成しようとしているツールチェーンの図を確認します。 この図は、ツールチェーン内の各ツール統合とそのライフサイクル・フェーズを示しています。
一部のツールチェーン・テンプレートには、同じツール統合の複数のインスタンスが含まれています。 例えば、 IBM Cloud Public の「Develop and test microservices with Kubernetes and Helm」ツールチェーン・テンプレートには、 GitHub の 4 つのインスタンスと Delivery Pipelineの 4 つのインスタンスが含まれています。
次のイメージの図はその例です。 ツールチェーンを作成すると、ツールチェーンを構成する各ツール統合がこの図に表示されます。
-
ツールチェーン設定のデフォルト情報を確認します。
- ツールチェーンの名前は、そのツールチェーンを IBM Cloud 内で識別するためのものです。 別の名前を使用する場合は、ツールチェーンの名前を変更します。
- ツールチェーンを作成する対象のリージョン。 別のリージョンを利用する場合は、選択可能なリージョンのリストから選んでください。
- ツールチェーンを作成するリソース・グループ。 別のリソース・グループを使用したい場合は、使用可能なリソース・グループのリストからそのリソース・グループを選択します。
- GitHub、GitLab、Bitbucket などのソース・リポジトリーのプロバイダー。 別のソース・プロバイダーを利用する場合は、使用可能なリポジトリーのリストから選んでください。
-
「ツール統合 (Tool Integrations)」セクションで、ツールチェーンに構成する各ツール統合を選択します。 いくつかのツール統合は、構成を必要としません。 ツール統合の構成について詳しくは、ツール統合の構成を参照してください。
ツールチェーンを構成するツール統合の多くは、Continuous Delivery サービスによる認証のためにシークレットを必要とします。
シークレットは、パスワード、認証トークン、API キー、または証明書の形式で提供可能な資格情報です。 例えば、Delivery Pipeline ツール統合をツールチェーンに追加するときは、シークレットを API キーの形式で提供する必要があります。
a. 「ツール統合」セクションで**「Delivery Pipeline」**をクリックします。
b. **「新規」**をクリックして IBM Cloud® API キーを作成します。
c. **「OK」**をクリックして、新しい API キーを適用します。
各ユーザーは、最大 20 の API キーを持つことができます。
(d) **「OK」**をクリックして、API キーを、そのキーのセキュア・コピーを保存しないで作成します。
e. API キーを安全に保存して、他のツールチェーン・ワークフローで再度使用できるようにするには、以下のようにします。
- Key Protect または Secrets Manager シークレット・ストアと統合するには、 「このキーをシークレット・ストアに再利用のために保存する」 チェック・ボックスを選択します。
- Key Protect または Secrets Managerの既存のインスタンスがない場合は、インスタンスの名前と秘密鍵を指定します。
- **「OK」**をクリックして、新しい API キーを適用します。
f. Key Protect または Secrets Manager インスタンスが正常に作成されたことを確認するには、 IBM Cloud® リソース・リスト に移動し、 サービス ツイスティーを展開します。 API キーを表示するには、メニュー・バーから **「管理」>「アクセス (IAM)」**をクリックし、 **IBM Cloud® 「API キー」**を選択します。
g. 作成して Key Project にコピーした API キーは、「ツールチェーンの作成」ページで使用できるようになりました。 シークレットが必要なツール統合には、鍵アイコンが表示されます。 1 つ以上の Key Protect または Secrets Manager インスタンスからシークレットを取得するには、キー・アイコンをクリックして「シークレット・ピッカー」ダイアログ・ボックスを開きます。
-
「作成」 をクリックします。 以下のようにいくつかのステップが自動的に実行されて、ツールチェーンがセットアップされます。 セットアップされるツール統合は、選択したツールチェーン・テンプレートによって異なります。 例えば、 IBM Cloud Public で「Develop and test microservices with Kubernetes and Helm」ツールチェーンを作成すると、以下のステップが実行されます。
- ツールチェーンが作成されます。
- Delivery Pipeline を構成した場合は、パイプラインが作成されて起動します。
- Event Notificationsを構成した場合、指定した Event Notifications サービスにイベント通知を送信するようにツールチェーンがセットアップされます。
- Sauce Labs を構成した場合は、パイプラインに Sauce Labs テスト・ジョブを追加するようにツールチェーンがセットアップされます。
- PagerDuty を構成した場合は、指定した PagerDuty サービスにアラート通知を送信するようにツールチェーンがセットアップされます。
- Slack を構成した場合は、指定した Slack チャネルにデプロイメント状況に関する通知を送信するようにツールチェーンがセットアップされます。
- GitHub などのソース・コード・ツール統合を構成した場合、サンプル GitHub リポジトリーが GitHub アカウントに複製されます。
Event Notifications ツール統合を使用してイベント通知を配布できるようになりました。 IBM Cloud Event Notifications は、 PagerDuty およびその他の通信チャネル (Slack、E メール、SMS、プッシュ通知、Webhook、Microsoft ® Teams、 ServiceNow、 IBM Cloud Functionsなど) に通知を配布するための推奨される方法です。 Event Notificationsの使用について詳しくは、 ツールチェーンのイベント通知の有効化を参照してください。
コンソールを使用したアプリからのツールチェーンの作成
アプリからツールチェーンを作成することができます。 ツールチェーンは、継続的な開発、デプロイメント、モニターなどをサポートすることができ、アプリと関連付けられます。 各アプリをツールチェーンと関連付けることができます。 ツールチェーンの GitHub リポジトリーに変更をプッシュすると、パイプラインは自動的にアプリをビルドしてデプロイします。
-
IBM Cloud Public を使用してアプリを作成した場合、そのアプリは、アプリのスターター・コードが取り込まれた新しい GitHub リポジトリーから継続的デリバリー用に構成されます。
-
ツールチェーン構成ページで、作成しようとしているツールチェーンの図を確認します。 この図は、ツールチェーン内の各ツール統合とそのライフサイクル・フェーズを示しています。
-
ツールチェーン設定のデフォルト情報を確認します。 ツールチェーンの名前は、そのツールチェーンを IBM Cloud 内で識別するためのものです。 別の名前を使用する場合は、ツールチェーンの名前を変更します。
-
「ツール統合 (Tool Integrations)」セクションで、ツールチェーンに構成する各ツール統合を選択します。 いくつかのツール統合は、構成を必要としません。 ツール統合の構成について詳しくは、ツール統合の構成を参照してください。
-
「作成」 をクリックします。 以下のようにいくつかのステップが自動的に実行されて、ツールチェーンがセットアップされます。 例えば、IBM Cloud Public でアプリからツールチェーンを作成する場合、以下のステップが実行されます。
- ツールチェーンが作成されます。
- Delivery Pipeline を構成した場合は、パイプラインが作成されて起動します。
- GitHub を構成した場合は、GitHub アカウントにサンプル GitHub リポジトリーが複製されます。
API を使用したツールチェーンの作成
-
IAM ベアラー・トークンを取得します。 あるいは、SDK を使用している場合は、 IAM API キーを取得 し、環境変数を使用してクライアント・オプションを設定します。
export CD_TOOLCHAIN_AUTH_TYPE=iam && \ export CD_TOOLCHAIN_APIKEY={iam_api_key} && \ export CD_TOOLCHAIN_URL={base_url}
-
ツールチェーンを作成したい リソース・グループの ID を検索 します。
-
ツールチェーンを作成する場所となるリージョンを選択します。
-
ツールチェーンのインスタンスを作成します。
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} |
ツールチェーン API エンドポイント URL (例: https://api.us-south.devops.cloud.ibm.com/toolchain/v2 )。 このエンドポイント URL (値のリストを含む) について詳しくは、 エンドポイント URLを参照してください。 |
{iam_api_key} |
IAM API キー。 |
{resource_group_id} |
ツールチェーンをプロビジョンする先のリソース・グループの ID。 使用可能なリソース・グループの ID を見つけるには、 ibmcloud resource groups を実行します。 |
{token} |
有効な IAM ベアラー・トークン。 |
{toolchain_description} |
ご使用のツールチェーンの説明。 |
{toolchain_name} |
ご使用のツールチェーンの名前。 |
API を使用したツールチェーンの作成について詳しくは、 IBM Cloud API 資料の ツールチェーンの作成 を参照してください。
Terraform を使用したツールチェーンの作成
-
Terraform CLI をインストールし、Terraform 用の IBM Cloud Provider プラグインを構成するために、Terraform on IBM Cloud® 入門のチュートリアルに従ってください。
-
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 レジストリー Documentationの引数参照の詳細を参照してください。 -
Terraform CLI を初期設定します。
terraform init
-
Terraform 実行プランを作成します。 このプランは、ツールチェーンを作成するために実行する必要があるすべてのアクションを要約します。
terraform plan
-
Terraform 実行プランを適用します。 Terraform は、ツールチェーンを作成するために必要なすべてのアクションを実行します。
terraform apply
ツールチェーンの表示
コンソール、CLI、API、または Terraform を使用して、ツールチェーンを表示することができます。
コンソールを使用したツールチェーンの表示
ツールチェーンとそのツール統合を構成した後、ツールチェーンのビジュアル表示を確認することができます。
アプリの詳細ページからツールチェーン名をクリックすることにより、アプリからツールチェーンを表示することができます。
-
IBM Cloud コンソールで、メニュー・アイコン をクリックし、**「DevOps」**を選択します。
-
「ツールチェーン」ページで、 「リソース・グループ」 と **「ロケーション」**を選択します。 選択したリソース・グループおよびロケーションに含まれているすべてのツールチェーンが表示されます。 表示するツールチェーンをクリックして、「概要」ページを開きます。 代わりに、アプリの「アプリの詳細」ページで、ツールチェーン名をクリックすることもできます。
-
ツールチェーン内のツール統合にアクセスするには、該当するカード (**「デリバリー・パイプライン」**など) に移動し、ツール統合をクリックします。
ツールチェーンは、 「リソース・リスト」の 「開発者ツール」 カテゴリー内にもあります。 デフォルトでは、「リソース」リストには、複数のリソース・グループおよびロケーションにわたるツールチェーンおよびその他のリソースが表示されます。
複数の GitHub または Git リポジトリーがある場合、各リポジトリーは個別に表されるため、**「リポジトリー」**カード内に同じツール統合の複数のインスタンスが存在する可能性があります。 複数のパイプラインがある場合は、各パイプラインが個別に表されるため、同じツール統合の複数のインスタンスが存在する可能性があります。 例えば、「Develop and test microservices with Kubernetes and Helm」ツールチェーンを作成した場合、各マイクロサービスには、独自の GitHub または Git リポジトリーと独自のパイプラインがあります。
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 を使用したツールチェーンの取得
-
IAM ベアラー・トークンを取得します。 あるいは、SDK を使用している場合は、 IAM API キーを取得 し、環境変数を使用してクライアント・オプションを設定します。
export CD_TOOLCHAIN_AUTH_TYPE=iam && \ export CD_TOOLCHAIN_APIKEY={iam_api_key} && \ export CD_TOOLCHAIN_URL={base_url}
-
ツールチェーンが存在する リソース・グループの ID を検索します 。
-
ツールチェーンが存在するリージョンを選択します。
-
リソース・グループ内のツールチェーンのリストを取得します。
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();
-
特定のツールチェーンを取得します。
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} |
ツールチェーン API エンドポイント URL (例: https://api.us-south.devops.cloud.ibm.com/toolchain/v2 )。 このエンドポイント URL (値のリストを含む) について詳しくは、 エンドポイント URLを参照してください。 |
{resource_group_id} |
ツールチェーンが含まれているリソース・グループの ID。 使用可能なリソース・グループの ID を見つけるには、 ibmcloud resource groups を実行します。 |
{token} |
有効な IAM ベアラー・トークン。 |
{toolchain_id} |
ツールチェーンの ID。 |
API を使用してツールチェーンをリストし、API を使用してツールチェーンを取得する方法について詳しくは、 IBM Cloud API 資料の ツールチェーンのリストの取得 および ツールチェーンの取得 を参照してください。
Terraform を使用したツールチェーンの表示
-
既存のツールチェーンの
resource
ブロックを含む Terraform ファイル (例えば、main.tf
) を見つけます。 -
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 レジストリー Documentationの引数参照の詳細を参照してください。 -
Terraform CLI を初期設定します。
terraform init
-
refresh-only
オプションを指定して Terraform 実行プランを適用します。 Terraform はその状態をリフレッシュし、ツールチェーン・リソースの属性を表示します。terraform apply -refresh-only -auto-approve
チュートリアルを始める: ツールチェーンの使用
IBM Cloud Garage Methodの 「Add a toolchain to an app」 チュートリアルをチェックアウトします。