通过 Powershell 将多个参数发送到 Azure-Devops 管道作业
send multiple parameter to Azure-Devops pipeline job via Powershell
我能够启动 Azure Devops 构建作业并发送一个文本参数,但我似乎只能发送一个参数,不能发送更多。
我需要发送一个有效的令牌参数 Ok,但我还想发送一个包含 json 有效负载的文本参数,以便在构建作业中由 Powershell 脚本处理。
所以我有一个 Hellow World 定义设置,在管道变量中有两个变量。
第一个是 tokentext,第二个是 jsonInput。
两者都选中了“可在排队时间设置”复选框。
我在作业定义中有一个 PowerShell 内联脚本:
Write-Host "Hello World"
Write-Host "tokentext: $(tokentext) `n"
Write-Host "Json Input"
Write-Host "---------------------------------------------------"
$(jsonInput)
我发送到 Invoke-RestMethod 的正文是:
$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 = "{`"tokentext`" :$mytoken, `"jsonInput`" :$j}"
}
$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
我能够启动 Azure Devops 构建作业并发送一个文本参数,但我似乎只能发送一个参数,不能发送更多。 我需要发送一个有效的令牌参数 Ok,但我还想发送一个包含 json 有效负载的文本参数,以便在构建作业中由 Powershell 脚本处理。 所以我有一个 Hellow World 定义设置,在管道变量中有两个变量。 第一个是 tokentext,第二个是 jsonInput。 两者都选中了“可在排队时间设置”复选框。 我在作业定义中有一个 PowerShell 内联脚本:
Write-Host "Hello World"
Write-Host "tokentext: $(tokentext) `n"
Write-Host "Json Input"
Write-Host "---------------------------------------------------"
$(jsonInput)
我发送到 Invoke-RestMethod 的正文是:
$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 = "{`"tokentext`" :$mytoken, `"jsonInput`" :$j}"
}
$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