在 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 中获取请求正文。
详细步骤如下:
在 ADOS 中使用您想要的步骤创建经典 UI。 (这一步不要保存)
如果您使用的是 edge,请按 F12 打开开发者控制台 window。然后选择'NetWork'.
点击保存,您会发现一条名为'definitions'的记录。
点击它,请求正文在页面底部。您将在 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 管道。单击 了解详细信息。
我正在尝试以编程方式创建 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 中获取请求正文。
详细步骤如下:
在 ADOS 中使用您想要的步骤创建经典 UI。 (这一步不要保存)
如果您使用的是 edge,请按 F12 打开开发者控制台 window。然后选择'NetWork'.
点击保存,您会发现一条名为'definitions'的记录。
点击它,请求正文在页面底部。您将在 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 管道。单击