Azure DevOps如何通过Rest API传递构建参数

4

我正在尝试使用Jira通过构建REST API传递参数,但它无法覆盖该参数。

管道:

parameters:
- name: "Testplan"
  type: string
  default: "NoPlanDefined"

stage: Test
  jobs:
  - job: Testing_And_Transfer
    - task: PowerShell@2
        displayName: "Testing API Call"
        inputs:
          targetType: 'filepath'
          filePath: './script/Jira.ps1'
          arguments: 
            -Jira_id ${{ parameters.Testplan }}

Jira.ps1内容:

Param(
    [string]$Jira_id = "no ID"
)
#-----------------------Jira API--------------------------
echo 'This is a test \n ID: '
echo $Jira_id

我的REST命令设置如下:

URL: https://dev.azure.com/{My corp}/MyHello/_apis/build/builds?api-version=6.0

正文:

{    
    "definition":  { 
        "id": 1 
        },
    "parameters": "{ \"Testplan\":\"Postman\" }"
}
  • 使用触发器时,ps1返回NoPlanDefined,符合预期。
  • 使用手动触发器并更改参数时,参数会按预期更改。
  • 尝试通过Rest API更改参数时,Postman为空而不是Testplan。

我在使用REST API时有做错什么吗?

2个回答

1

至少在撰写本文时,OP中的Build API也可以正常工作。但是非常重要的一点是要记住templateParameters是一个对象而不是字符串。因此,在有效载荷中,参数属性变为"parameters": { Testplan: "Postman" } - Mihai Albert

0
如果您熟悉PowerShell,可以使用AzurePipelinesPS模块和以下命令在调用管道时传递参数。
$id = '2' # your pipeline id
$templateParameters = @{
    Testplan = 'myTestPlan' # your parameter and value
}
Invoke-APPipeline -Instance https://dev.azure.com -Collection 'yourCollectionName' -Project 'yourProjectName' -ApiVersion '6.0-preview.1' -PipelineId $id -TemplateParameters $templateParameters

该模块支持“会话”以限制所需参数的数量。请参阅该模块的github页面,了解如何创建会话。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接