如何通过Octopus Deploy API指定部署目标执行部署
如何通过Octopus Deploy API指定部署到特定目标
调用创建部署接口时默认会在所选环境下所有匹配部署角色的目标上执行任务,要限定部署到特定目标,直接在请求体里加对应参数即可,不需要调整现有部署流程配置。
具体实现
- 先拿到目标部署机器的ID
Octopus里每个部署目标的ID格式为Machines-xxx,可以先调用机器列表接口,按当前环境ID过滤拿到需要指定的目标ID:GET /api/{你的SpaceId}/machines?environmentIds={你当前使用的EnvironmentId} - 在创建部署的请求中新增
SpecificMachineIds字段,值为要部署的目标ID数组,接口收到这个参数后就只会向列出的目标下发部署任务,不会跑环境里的其他节点。
修改后的请求示例
curl --location --request POST '$(octopus-url)/api/$(SpaceId)/deployments' \ --header 'X-Octopus-ApiKey: API-KEY' \ --header 'Content-Type: application/json' \ --data-raw '{ "ReleaseId": "Releases-ID", "EnvironmentId": "Environments-ID", "SpecificMachineIds": [ "Machines-你要指定的第一个目标ID", "Machines-你要指定的第二个目标ID" ] }'
注意事项
- 如果只需要部署到单台特定目标,数组里只放对应那一个机器ID即可
SpecificMachineIds的优先级高于默认的「环境+目标角色」匹配规则,只要传入的机器归属当前指定的环境,部署就只会在这些机器上执行- 如果你需要的是环境内大部分机器都部署、仅排除个别节点的场景,可以换用
ExcludedMachineIds参数传入要排除的机器ID数组,不用列全所有需要部署的目标 - 请确认你指定的目标已经绑定了部署流程步骤要求的目标角色,否则对应步骤会在该目标上被自动跳过
内容的提问来源于stack exchange,提问作者Gabe
相关产品推荐
相关产品推荐

