将变量从 Octopus 项目导出到 json 文件

Export variables from Octopus project to json file

有没有办法在 Jenkins 中使用 "Command" 步骤将八达通变量导出到 json 文件? 根据 Octopus 官方文档,我只能导出项目和版本。

有什么方法可以从特定项目导出特定变量吗?

目前您无法使用 Octo.exe 执行此操作。

但是您仍然可以使用 Octopus REST API 来达到您的目的。

首先您必须创建一个 API Key,这是访问那些 API 所必需的。 然后调用以下 API 端点以获取您的特定项目。

https://<your-octopus-installation>/api/projects/<project name>

然后响应 JSON 包含 VariableSetId,您应该将其用于以下请求。

https://<your-octopus-installation>/api/variables/<VariableSetId>

对于上述每个请求,您都应提供 X-Octopus-ApiKey HTTP header,并以 API 键作为值。详情请参考this

请注意,您不会获得敏感变量的值。

小贴士: 当您通过浏览器访问 Octopus 时,观察它执行的 HTTP 请求。这将帮助您理解 API 需要执行的调用,以实现您的要求。

如果你正在使用 C#,你可以尝试 Octopus.Client

您还可以使用我刚刚发布的 PowerShell* 模块将 Octopus Deploy 配置导出到 JSON 文件:

https://github.com/DTW-DanWard/OctopusDeployUtilities

您可以使用 Octopus 部署实用程序 (ODU) 按 REST API 类型导出部分或全部数据。它还 post 处理您的导出数据,为您执行 ID -> 名称查找。它还附带了一堆有用的实用程序,例如将导出中的所有数据收集到单个对象中的函数,这样您就可以以编程方式解析、报告甚至单元测试您的配置。

注意:您可能难以从您的 Octopus Deploy 服务器自行导出变量集。 Octopus Deploy 在内部存储每个变量集的每个修订,当您调用 API 来提取所有变量集数据时,您的 API 调用可能会因为所有这些修订而超时。 ODU 通过仅获取项目积极使用的最新变量集数据和包含的库变量集来解决这个问题。

*它是在 PowerShell Core 中编写和测试的,因此它将在所有操作系统上 运行。它在 Windows PowerShell 5 中也 运行 很好。