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 環境ですべてのインテグレーションを簡単に複製できます。これを行うには、以下を実行します。
- 環境ラベルがすでに作成されている必要があります。CI/CD のインテグレーションのマーク付け を参照してください。
-
エクスポートエンドポイントの呼び出しに
all=true
オプションを追加します。
以下に例を示します。
/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
環境に対してマーク付けされ、その後エクスポートされていないインテグレーションをエクスポートすることを示しています。