azure-devops - 通过 Powershell 向 Azure-Devops 管道作业发送多个参数
问题描述
我能够启动 Azure Devops Build 作业并发送一个文本参数,但我似乎只能发送一个参数而不是更多。我需要发送一个有效的令牌参数 Ok,但我还想发送一个文本参数,其中包含要由构建作业中的 Powershell 脚本处理的 json 有效负载。所以我有一个 Hellow World 定义设置,在管道变量中有两个变量。第一个是tokentext,第二个是jsonInput。两者都选中了“可在排队时设置”复选框。我在作业定义中有一个 PowerShell 内联脚本:
Write-Host "Hello World"
Write-Host "tokentext: $(tokentext) `n"
Write-Host "Json Input"
Write-Host "---------------------------------------------------"
$(jsonInput)
我发送到 Invoke-RestMethod 的 Body 是:
$body = @{
definition = @{
id = $buildDefID
}
parameters = "{`"tokentext`" :$mytoken}
{`"jsonInput`" :$j}
"
}
$b = $body | ConvertTo-Json
这有效,但上述无效:
$body = @{
definition = @{
id = $buildDefID
}
parameters = "{`"tokentext`" :$mytoken}
"
}
$b = $body | ConvertTo-Json
我试过用逗号分隔参数等。我尝试过的所有孩子。如果有人从脚本向构建定义中的变量发送多个参数,我肯定会使用一些帮助。
谢谢
解决方案
下面的请求正文对我有用。请检查一下。
$body = @{
definition= @{id = $buildDefID};
parameters ="{`"jsonInput`":`"$jsonInput`", `"tokentext`":`"$tokentext`"}"
}
$b = $body | ConvertTo-Json
您还可以通过Runs - Run Pipeline rest api 运行您的管道,这不太复杂。
POST https://dev.azure.com/{organization}/{project}/_apis/pipelines/{pipelineId}/runs?api-version=6.1-preview.1
pipelineId
是个$buildDefID
您可以将参数放在请求正文中,如下所示:
$body=@{
variables = @{
jsonInput= @{value = $jsonInput};
tokentext= @{value = $tokentext}
}
}
$b = $body | ConvertTo-Json
推荐阅读
- ruby-on-rails - 如何在 Spree 中向 Checkout Flow 添加回滚转换事件
- node.js - 在保存或更新时自动设置猫鼬模式属性
- c++ - 铸造 shared_ptr
到weak_ptr 然后回来 - python-3.x - 如何摆脱字符串变量中的 b 前缀和 ' '
- ruby - 如何在定义的对象上调用用户选择的方法?
- ios - UICollectionView 分页完成时会触发什么函数?
- bash - AWS Systems Manager 获取库存不是归还所有内容吗?
- angular - 我的 Angular 组件的顶级 Bootstrap 类应该是什么,以独立于其父级?
- javascript - 如果菜单打开,则应用 css 规则
- bash - 如何将命令的输出作为(多个)选项(包含空格)传递给另一个命令