我有一个主管道,我可以在其中选择应该触发哪些阶段。该主管道调用其他管道。从这些管道中,还应该从主管道中触发该阶段。我发现有一个
stagesToSkip
参数。但我在那里选择什么并不重要。被调用管道中的所有阶段都会被触发。错误是什么?
$targetEnvironment = 'dev'
$stages = @("dev", "staging", "prod") | Where-Object { $_ -ne $targetEnvironment } | ConvertTo-Json
$body = "{
`"stagesToSkip`" : $(ConvertTo-Json($stages))
}"
Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $body -ContentType application/json
我已经按照链接中的方式完成了。我可以找到我的错误。 $stages 已经是一个数组。所以片段必须是“stagesToSkip”:$stages
是的,您需要修复
stagesToSkip
值。我修复了代码,该代码只会触发目标环境开发阶段,并跳过暂存、生产阶段。
pool:
vmImage: Windows-latest
steps:
- checkout: none
- powershell: |
$url="https://dev.azure.com/{org}/{project}/_apis/pipelines/{pipelineid}/runs?api-version=6.0-preview.1"
$targetEnvironment = 'dev'
$stages = @("dev", "staging", "prod") | Where-Object { $_ -ne $targetEnvironment }
$stagestoskip = '[ "' + ($stages -join '", "') + '" ]'
echo $stagestoskip
$body="{
`"stagesToSkip`": $stagestoskip
}"
Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $(System.AccessToken)"} -Method Post -Body $body -ContentType application/json
仅运行目标开发阶段:
关于您的新查询,您可以提出新的请求并分享链接。