在 AzureDevOps 2019 中向构建定义添加步骤

Add steps to a build definition in AzureDevOps 2019

我正在尝试以编程方式创建 ADOS 构建定义。我在这里找到了一个类似的问题和答案:

答案示例中,步骤属性为空。我包含了一些步骤(取自使用相同 API 的另一个构建定义中的 JSON)。结果是创建的构建定义没有步骤。

我深入研究了 .NET API 浏览器,发现有一个 BuildProcess classs with a Process property which should take a DesignerProcess for TFVC pipelines (since YAML is only suported for Git repos), DesignerProcess has a Phase 属性 是只读的,这可能是它没有创建我的步骤的原因

但是我仍然需要找到一种以编程方式创建构建步骤的方法

However I still need to find out a way to create a builds steps programmatically.

如果您不知道要在步骤 属性 中添加什么,您可以在保存经典 UI 管道时在开发人员控制台 window 中获取请求正文。

详细步骤如下:

  1. 在 ADOS 中使用您想要的步骤创建经典 UI。 (这一步不要保存)

  2. 如果您使用的是 edge,请按 F12 打开开发者控制台 window。然后选择'NetWork'.

  3. 点击保存,您会发现一条名为'definitions'的记录。

  4. 点击它,请求正文在页面底部。您将在 Process 和 processParameters 属性中找到 steps-related 信息。

如果您使用不同的浏览器,步骤 2、3 和 4 可能会有一些细微的差异。

然后您可以在 REST API 请求正文中编辑和添加脚本。

这是一个包含命令行任务的请求正文的简单示例。

"process": {
    "phases": [
        {
            "condition": "succeeded()",
            "dependencies": [],
            "jobAuthorizationScope": 1,
            "jobCancelTimeoutInMinutes": 0,
            "jobTimeoutInMinutes": 0,
            "name": "Agent job 1",
            "refName": "Job_1",
            "steps": [
                {
                    "displayName": "Command Line Script",
                    "refName": null,
                    "enabled": true,
                    "continueOnError": false,
                    "timeoutInMinutes": 0,
                    "alwaysRun": false,
                    "condition": "succeeded()",
                    "inputs": {
                        "script": "echo Hello world\n",
                        "workingDirectory": "",
                        "failOnStderr": "false"
                    },
                    "overrideInputs": {},
                    "environment": {},
                    "task": {
                        "id": "d9bafed4-0b18-4f58-968d-86655b4d2ce9",
                        "definitionType": "task",
                        "versionSpec": "2.*"
                    }
                }
            ],
            "target": {
                "type": 1,
                "demands": [],
                "executionOptions": {
                    "type": 0
                }
            },
            "variables": {}
        }
    ],
    "type": 1,
    "target": {
        "agentSpecification": {
            "metadataDocument": "https://mmsprodea1.vstsmms.visualstudio.com/_apis/mms/images/VS2017/metadata",
            "identifier": "vs2017-win2016",
            "url": "https://mmsprodea1.vstsmms.visualstudio.com/_apis/mms/images/VS2017"
        }
    },
    "resources": {}
}

此外,目前不支持通过 REST API 创建 YAML 管道。单击 了解详细信息。