Menu Close

第6章 外部ツールを使用した CI/CD の Fuse Online インテグレーションのエクスポート/インポート

オンサイトの OCP で Fuse Online を稼働している場合、CI/CD (継続的インテグレーション/継続的デプロイメント) パイプラインを特定のインテグレーションで実行することがあります。これを実装するには、以下のタスクを完了する必要があります。

  • Fuse Online コンソールで、インテグレーションに CI/CD パイプラインをマーク付けします。
  • OpenShift で、Fuse Online のパブリック API を公開します
  • 外部ツールを使用して、インテグレーションをエクスポートおよびインポートする Fuse Online パブリック API エンドポイントを呼び出します。

詳細は以下のトピックを参照してください。

6.1. CI/CD のインテグレーションのマーク付け

オンサイトの OCP で Fuse Online を稼働している場合、パイプラインのインテグレーションを特定するために、指定する CI/CD 環境のインテグレーションをマーク付けします。これにより、タイムスタンプ付きのラベルがインテグレーションに適用されます。バックエンド CI/CD Fuse Online のパブリック API は、ラベルおよびそのタイムスタンプを使用してインテグレーションをフィルタリングし、パイプラインが動作する必要のあるインテグレーションを見つけます。

たとえば、Fuse Online で test1 環境のインテグレーションをマーク付けするとします。その後、Fuse Online のパブリック API エクスポートエンドポイントを呼び出して、test1 環境ラベルがあるインテグレーションをエクスポートできます。エンドポイントによって test1 インテグレーションがをエクスポートファイルにパッケージ化され、そのファイルが返されます。test1 インテグレーションを Fuse Online テスト環境にコピーするには、パブリック API インポートエンドポイントを呼び出し、エクスポートした test1 インテグレーションが含まれるファイルを提供します。

ここで、以前 test1 環境に対してマーク付けしたインテグレーションを繰り返し更新し、パブリッシュするとします。インテグレーションが新しいバージョンになり、更新されたバージョンを test1 環境にエクスポートするとします。すでにインテグレーションが test1 環境に対してマーク付けされている場合でも、再度マーク付けする必要があります。インテグレーションを再度マーク付けすると、test1 環境ラベルのタイムスタンプが更新されます。これは、インテグレーションが更新され、エクスポートできるようになったことを外部ツールに示します。

インテグレーションを再度マーク付けする、つまりインテグレーションにすでに割り当てられた環境ラベルのタイムスタンプを更新するには、「CI/CD のインテグレーションのマーク付け」の手順にしたがいます。CI/CD ダイアログで、対象の環境のチェックボックスがすでに選択されているはずなので、Save をクリックします。

6.2. CI/CD のインテグレーションのマーク付け

オンサイトの OCP で Fuse Online を稼働している場合、パイプラインのインテグレーションを特定するために、指定する CI/CD 環境のインテグレーションをマーク付けします。これにより、ラベルがインテグレーションに適用されます。

前提条件

Fuse Online がインストールされている OCP プロジェクトが必要です。

手順

  1. 左側の Fuse Online ナビゲーションパネルで Integrations をクリックします。
  2. インテグレーションのリストで、マーク付けするインテグレーションのエントリーの右にある More Options をクリックしてポップアップメニューを表示し、Manage CI/CD をクリックします。
  3. 表示されるダイアログで、以下のいずれかを行います。

    • このインテグレーションをマーク付けする環境が表示されている場合、その環境の左側にあるチェックボックスを選択します。
    • このインテグレーションをマーク付けする環境がすでに選択されている場合は、その環境を選択したままにしておきます。
    • 環境のラベルを作成する必要がある場合、Manage CI/CD をクリックすると、新しい環境ラベルを作成するダイアログが表示されます。必要なラベルを作成してから、この手順に戻り、インテグレーションをマーク付けします。

    Fuse Online によって、選択した環境ラベルがインテグレーションに適用されます。任意の数の環境ラベルをインテグレーションに適用できます。

  4. Save をクリックします。

結果

Fuse Online は、選択した環境のリリースのインテグレーションにラベルを付けます。バックエンド API はインテグレーションをフィルタリングして、たとえば test1 ラベルが付いたインテグレーションなどの検索を行うことができます。

次のステップ

パイプラインが特定の環境に対してマーク付けされたインテグレーションで動作できるようにするには、先に Fuse Online のパブリック API エンドポイントを公開する必要があります。「外部ツールによって使用される Fuse Online パブリック REST API の公開」を参照してください。

6.3. CI/CD の環境ラベルの管理

Fuse Online コンソールで CI/CD 環境ラベルを作成、変更、または削除できます。CI/CD 環境ラベルは、CI/CD パイプラインのインテグレーションに適用できる識別用のタグです。

前提条件

  • オンサイトの OCP で Fuse Online を稼働している必要があります。
  • 外部ツールでは、Fuse Online 環境ラベルを使用して CI/CD パイプラインのインテグレーションが識別される必要があります。

手順

  1. Fuse Online の左側のナビゲーションパネルで Integrations をクリックします。
  2. 右上の Manage CI/CD をクリックします。
  3. Manage CI/CD ページで以下を行います。

    • CI/CD 環境ラベルを作成するには、以下を実行します。

      1. Add New をクリックします。
      2. Add Tag Name ダイアログで、Tag Name 入力フィールドに新しい環境ラベルの名前を入力します (例: test1)。
      3. Save をクリックします。Manage CI/CD ページに、追加した環境ラベルの新しいエントリーがあります。
    • CI/CD 環境ラベルを変更するには、以下を実行します。

      1. CI/CD 環境ラベルの一覧内の、変更するラベルのエントリーで、Edit をクリックします。
      2. Edit Tag ダイアログで、必要に応じて名前を変更します。
      3. Save をクリックすると、環境ラベルのリストに更新された名前が表示されます。Fuse Online は、変更した環境ラベルですでにマーク付けされているすべてのインテグレーションに対し、更新された名前を適用します。
    • CI/CD 環境ラベルを削除するには、以下を実行します。

      1. CI/CD 環境ラベルの一覧内の、削除するラベルのエントリーで、Remove をクリックします。
      2. 確認ダイアログで、Yes をクリックします。Fuse Online は環境ラベルを削除し、削除される環境ラベルでマーク付けされたインテグレーションからもラベルを削除します。

次のステップ

新しい環境ラベルでインテグレーションをマーク付けします。「CI/CD のインテグレーションのマーク付け」を参照してください。

6.4. Fuse Online パブリック API エクスポートエンドポイントの呼び出し

外部ツールを使用して Fuse Online インテグレーションを別の Fuse Online 環境からコピーできるようにするには、先に以下のタスクを実行する必要があります。

  • Fuse Online では、CI/CD パイプラインのためにエクスポートするインテグレーションを特定の環境に対してマーク付けする必要があります。「CI/CD のインテグレーションのマーク付け」を参照してください。

    この要件には例外があります。1 回のエクスポート操作で Fuse Online 環境からすべてのインテグレーションをエクスポートする場合、特定の環境に対してインテグレーションがすでにマーク付けされているかどうかは重要ではありません。

  • Fuse Online のパブリック API が公開済みである必要があります。「外部ツールが使用する Fuse Online のパブリック REST API の公開」を参照してください。

特定環境のインテグレーションをエクスポートするためのエンドポイント

特定の環境に対してマーク付けされたインテグレーションをエクスポートするために、Fuse Online は以下の GET メソッドエンドポイントを提供します。

/public/integrations/{env}/export.zip

{env} を、すでに作成した CI/CD 環境ラベルに置き換えてください。インテグレーションが特定の環境に対してマーク付けされている場合、Fuse Online はマーク付けされたタイミングを示すタイムスタンプで管理します。エンドポイントがマーク付けされてからエクスポートされていない場合に限り、インテグレーションをエクスポートするのがデフォルトの挙動です。たとえば、test1 環境に対してマーク付けされたインテグレーションをエクスポートする場合、エンドポイントは以下のようになります。

/public/integrations/test1/export.zip

このエンドポイントは、test1 環境ラベルがあり、以下の条件のいずれかを満たす、各インテグレーションをエクスポートします。

  • インテグレーションは、最後にエクスポートされた後にtest1 環境に対してマーク付けされた。
  • インテグレーションは test1 環境に対してマーク付けされ、エクスポートされていない。

エンドポイントはインテグレーションを export.zip ファイルにパッケージ化し、そのファイルを返します。

インテグレーションがエクスポートされた後に指定の環境に対してマーク付けされたインテグレーションがない場合は、エンドポイントは HTTP 204 応答を返し、返すものがないことを示します。

指定された環境に対してタグ付けされたすべてのインテグレーションをエクスポートするためのエンドポイント

エクスポートエンドポイントを呼び出して、指定する環境ラベルでタグ付けされた Fuse Online 環境のすべてのインテグレーションをエクスポートすることができます。エンドポイントは、インテグレーションが最後にエクスポートされた後に指定の環境に対してマーク付けされたかどうかをインテグレーションにエクスポートします。これにより、特定のタグがあるすべてのインテグレーションを別の Fuse Online 環境で簡単に複製できます。これを行うには、以下を実行します。

  • 環境ラベルがすでに作成されている必要があります。「CI/CD のインテグレーションのマーク付け」を参照してください。
  • エクスポートエンドポイントの呼び出しに ignoreTimestamp=true オプションを追加します。

以下に例を示します。

/public/integrations/test1/export.zip?ignoreTimestamp=true -o export.zip

すべてのインテグレーションをエクスポートするためのエンドポイント

エクスポートエンドポイントを呼び出して、単一の Fuse Online 環境ですべてのインテグレーションをエクスポートすることができます。これにより、別の Fuse Online 環境ですべてのインテグレーションを簡単に複製できます。これを行うには、以下を実行します。

以下に例を示します。

/public/integrations/{env}/export.zip?all=true

{env} を CI/CD 環境ラベルに置き換えます。エンドポイントは、その環境に対してマーク付けされていない各インテグレーションに、指定した環境ラベルを割り当てます。

all=true オプションを追加する場合、エクスポートされたインテグレーションを export.zip ファイルにパッケージ化するように明示的に指定する必要もあります。以下に例を示します。

/public/integrations/test1/export.zip?all=true -o export.zip

このエンドポイントの呼び出しによって、以下のことが実行されます。

  • test1 環境の各インテグレーションがマーク付けされます。
  • export.zip ファイルのすべてのインテグレーションを返します。

    -o export.zip オプションを指定しない場合、エンドポイントは export.zip?all=true という名前のファイルを返します。

エクスポートエンドポイントに必要なカスタムヘッダー

エクスポートエンドポイントを呼び出すコマンドでは、以下のカスタムヘッダーを正確に指定する必要があります。

  • -H "Content-Type: multipart/form-data"
  • -H "SYNDESIS-XSRF-TOKEN: awesome"

    Fuse Online のパブリック API では、リクエストの認証にこのヘッダーが必要です。

  • -H 'Authorization: Bearer <token>'

    <token> を、Fuse Online のパブリック API の公開に使用される OpenShift サービスアカウントの作成時にファイルにコピーしたシークレットトークンに置き換えます。

インテグレーションをエクスポートする curl コマンドの例

以下は、インテグレーションをエクスポートする Fuse Online API エンドポイントを呼び出す curl コマンドの例です。

curl -v -k -L -H "Content-Type: multipart/form-data" -H "SYNDESIS-XSRF-TOKEN: awesome" -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJzeW5kZXNpcyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJzeW5kZXNpcy1jZC1jbGllbnQtdG9rZW4tMnZjNmwiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoic3luZGVzaXMtY2QtY2xpZW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjUxMjYxNGMtMmYwMS0xMWU5LTk3OWEtNDI1YWNlMzY3MTcyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OnN5bmRlc2lzOnN5bmRlc2lzLWNkLWNsaWVudCJ9.uKsri0JSKJDbgHoQwAhBJSNuWKwJgjegf2QlrCkhxVssSK1zIMZQaF9P5a4R7ZcWRnrZ_345UTqxYVeRlfHWVH0PqBkD-n7PAS9dcKJIFdS1jUHOmL1FTGgc3YW-bz1SlWT93tvK1EhorZ4_-EBfXhSAP4Uumi5qAg3_QUTMDstq233NSwBKYtFOw3Pp1ys3p3y0hcaiLMimeCH60vR4iWvptqqzc5QDigHiPySZNWxs_5awZlwdoIDvR-nSj690aC-49UKFgyEEdzdFU4bI2W4hOyDyhN9fVaIAZQKeJUrJBU-lnFTHI_NAd2OwzOEBpWZuj31Za5w9fU4kf4UDGA'
https://public-syndesis.192.168.64.42.nip.io/api/v1/public/integrations/dev1/export.zip

コマンドでは、以下が行われます。

  • コマンドの最後にある URL は、インテグレーションをエクスポートする Fuse Online 環境を識別します。
  • dev1 環境ラベルの指定内容は、dev1 環境に対してマーク付けされ、その後エクスポートされていないインテグレーションをエクスポートすることを示しています。

6.5. Fuse Online パブリック API インポートエンドポイントの呼び出し

Fuse Online のパブリック API エクスポートエンドポイントを呼び出して、1 つまたは複数のインテグレーションを取得できます。エクスポートされたインテグレーションを別の Fuse Online 環境にコピーするには、Fuse Online のパブリック API インポートエンドポイントを呼び出します。

インテグレーションをインポートするためのエンドポイント

インテグレーションをインポートするため、Fuse Online は以下の POST メソッドエンドポイントを提供します。

/public/integrations

以下の例では、エンドポイントは export.zip ファイルにあるインテグレーションをインポートし、testing 環境に対してタグを付けます。

/public/integrations -F data=@export.zip -F environment=testing --request POST

インポートエンドポイントは指定のインテグレーションを常にインポートします。最後にインポートされてからインテグレーションが変更されていない場合も、エンドポイントはそれをインポートします。

インポートエンドポイントに必要なカスタムヘッダー

インポートエンドポイントを呼び出すコマンドでは、以下のカスタムヘッダーを正確に指定する必要があります。

  • -H "Content-Type: multipart/form-data"
  • -H "SYNDESIS-XSRF-TOKEN: awesome"

    Fuse Online のパブリック API では、リクエストの認証にこのヘッダーが必要です。

  • -H 'Authorization: Bearer <token>'

    <token> を、Fuse Online のパブリック API の公開に使用される OpenShift サービスアカウントの作成時にファイルにコピーしたシークレットトークンに置き換えます。

インテグレーションをインポートする curl コマンドの例

以下は、インテグレーションをインポートする Fuse Online API エンドポイントを呼び出す curl コマンドの例です。

curl -v -k -L -H "Content-Type: multipart/form-data" -H "SYNDESIS-XSRF-TOKEN: awesome" -H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJzeW5kZXNpcyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJzeW5kZXNpcy1jZC1jbGllbnQtdG9rZW4tMnZjNmwiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoic3luZGVzaXMtY2QtY2xpZW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjUxMjYxNGMtMmYwMS0xMWU5LTk3OWEtNDI1YWNlMzY3MTcyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OnN5bmRlc2lzOnN5bmRlc2lzLWNkLWNsaWVudCJ9.uKsri0JSKJDbgHoQwAhBJSNuWKwJgjegf2QlrCkhxVssSK1zIMZQaF9P5a4R7ZcWRnrZ_345UTqxYVeRlfHWVH0PqBkD-n7PAS9dcKJIFdS1jUHOmL1FTGgc3YW-bz1SlWT93tvK1EhorZ4_-EBfXhSAP4Uumi5qAg3_QUTMDstq233NSwBKYtFOw3Pp1ys3p3y0hcaiLMimeCH60vR4iWvptqqzc5QDigHiPySZNWxs_5awZlwdoIDvR-nSj690aC-49UKFgyEEdzdFU4bI2W4hOyDyhN9fVaIAZQKeJUrJBU-lnFTHI_NAd2OwzOEBpWZuj31Za5w9fU4kf4UDGA'
https://public-syndesis.192.168.64.45.nip.io/api/v1/public/integrations -F data=@export.zip -F environment=testing --request POST

このコマンドでは、以下が行われます。

  • コマンドの最後にある URL は、インテグレーションをインポートする Fuse Online 環境を識別します。
  • export.zip ファイルには、インポートされるインテグレーションが含まれます。
  • environment=testing を指定すると、エンドポイントによって、インポートされた各インテグレーションが testing 環境に対してマーク付けされます。
  • このコマンドにより、multipart/form-data が作成されます。