5.4. 调用 Fuse Online 公共 API 导出端点
在使用外部工具将 Fuse Online 集成从一个 Fuse 在线环境复制到另一个版本之前,必须完成以下任务:
在 Fuse Online 中,需要为 CI/CD 管道导出的集成必须标记为特定环境。请参阅 标记 CI/CD 集成。
此要求有一个例外。当您希望在一个导出操作中导出 Fuse Online 环境中的所有集成时,无论是否将集成标记为特定环境。
- 您公开了 Fuse Online 公共 API。请参阅为外部工具公开 Fuse Online 公共 API 端点。
用于导出特定环境的集成端点
要导出已标记为特定环境的集成,Fuse Online 提供以下 GET
方法端点:
/public/integrations/{env}/export.zip
使用您创建的 CI/CD 环境标签替换 {env}
。当某个集成标记为特定环境时,Fuse Online 维护一个时间戳,表示它何时被标记。默认行为是端点仅在未导出自标记以来才导出集成。例如,要导出已标记为 test1
环境的集成,端点为:
/public/integrations/test1/export.zip
此端点导出具有 test1
环境标签且满足以下任一条件的每个集成:
-
自上次导出后,该集成已标记为
test1
环境。 -
该集成已标记为
test1
环境,它从未导出。
端点打包了 export.zip
文件中的集成并返回该文件。
如果自上次导出集成以来,未标记标记指定环境的集成,则端点会返回 HTTP 204
响应,以指示没有返回任何操作。
用于导出指定环境标记的所有集成的端点
您可以调用导出端点,以便它将所有集成到 Fuse Online 环境中,并带有您指定的环境标签。端点将导出集成,无论它是否标记了指定环境,自上次导出集成的时间。这样便可轻松地重复在另一个 Fuse Online 环境中带有特定标签的所有集成。要做到这一点:
- 您必须已创建了 environment 标签。请参阅 标记 CI/CD 集成。
-
在调用导出端点时,添加
ignoreTimestamp=true
选项。
例如:
/public/integrations/test1/export.zip?ignoreTimestamp=true -o export.zip
用于导出所有集成的端点
您可以调用导出端点,以便它在一个 Fuse 在线环境中导出所有集成。这样便可轻松地在另一个 Fuse 在线环境中重复所有集成。要做到这一点:
- 您必须已创建了 environment 标签。请参阅 标记 CI/CD 集成。
-
将
all=true
选项添加到导出端点的调用。
例如:
/public/integrations/{env}/export.zip?all=true
使用 CI/CD 环境标签替换 {env}
。端点将指定的环境标签分配给尚未为该环境标记的每个集成。
添加 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 在线公共 API 需要此标头来验证请求。
-H 'Authorization: Bearer <token>'
将
<
;token> 替换为您在创建用来公开 Fuse Online 公共 API 的 OpenShift 服务账户时复制到文件中的机密令牌。
导出集成的 curl
命令示例
以下是一个 curl
命令示例,它调用 Fuse Online API 端点来导出集成:
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
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 在线环境,从其中导出集成。
-
dev1
环境标签的规格表示您要导出已标记为dev1
环境的集成,并且尚未在标记后导出它们。