【问题标题】:Add steps to a build definition in AzureDevOps 2019在 AzureDevOps 2019 中向生成定义添加步骤
【发布时间】:2020-08-07 18:20:57
【问题描述】:

我正在尝试以编程方式创建 ADOS 构建定义。我在这里找到了一个类似的问题的答案:How to create Build Definitions through VSTS REST API

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

我深入研究了 .NET API 浏览器,发现有一个带有 Process 属性的 BuildProcess 类,对于 TFVC 管道应该采用 DesignerProcess(因为 YAML 仅支持 Git 存储库),DesignerProcess有一个只读的Phase 属性,这可能是它没有创建我的步骤的原因

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

【问题讨论】:

    标签: azure azure-devops azure-devops-rest-api


    【解决方案1】:

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

    如果您不知道要向 step 属性添加什么,可以在保存经典 UI 管道时在开发者控制台窗口中获取请求正文。

    详细步骤如下:

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

    2. 如果您使用的是 edge,请按 F12 打开开发者控制台窗口。然后选择“网络”。

    3. 点击保存,您会发现一条名为“定义”的记录。

    4. 点击它,请求正文在页面底部。您将在 Process 和 processParameters 属性中找到与步骤相关的信息。

    如果您使用不同的浏览器,第 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 管道。详情请点击this question

    【讨论】:

    • 您可以使用 AzurePipelinePS powershell 模块获取发布定义 Get-APReleaseDefinition 作为 JSON,修改 JSON 并使用 Update-APReleaseDefintion 将其发布回来。 powershellgallery.com/packages/AzurePipelinesPS
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多