eba*_*kov 9 azure-devops azure-pipelines
有没有办法通过 CLI 或 API(或其他任何东西)批准运行?我正在寻找一种方法来批量批准来自不同管道的多次运行,但它在 UI 中不可用。
假设我有 100 个管道,它们具有到生产环境的部署作业。我想批准所有等待批准的运行。
目前,我在 Azure DevOps REST API 或 CLI 的文档中找不到类似的内容。
功能文档:https : //docs.microsoft.com/en-us/azure/devops/pipelines/process/environments https://docs.microsoft.com/en-us/azure/devops/pipelines/process/approvals
以下问题是相关的,但我正在寻找解决它的任何方法,但不仅仅是通过 API: 使用 REST api 在 Azure DevOps 中批准 yaml 管道部署
我只是在寻找有关获取您需要的批准 ID 的答案。事实上,有一个未记录的 API 来批准批准检查。
这是梅林解释如下
https://dev.azure.com/{org}/{project}/_apis/pipelines/approvals/{approvalId}
Run Code Online (Sandbox Code Playgroud)
身体必须看起来像这样
[{
"approvalId": "{approvalId}",
"status": {approvalStatus},
"comment": ""
}]
Run Code Online (Sandbox Code Playgroud)
{approvalStatus}如果您批准与否,在哪里告诉 API。你可能必须尝试,但我有4一个状态。我想只有两种可能性。无论是“批准”还是“拒绝”。
现在的问题是您如何获得批准 ID?我找到了。您可以通过使用经典构建的时间线 API 来获得它。在构建API文档说,你通过以下得到它
https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}?api-version=5.1
Run Code Online (Sandbox Code Playgroud)
您在构建运行的响应中获得的构建时间线,但它有一个模式
https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/Timeline?api-version=5.1
Run Code Online (Sandbox Code Playgroud)
除了平面阵列容器之外,阶段、阶段、作业和任务的父/子关系,您还可以在其中找到如下内容:
{
"records": [
{
"previousAttempts": [
],
"id": "95f5837e-769d-5a92-9ecb-0e7edb3ac322",
"parentId": "9e7965a8-d99d-5b8f-b47b-3ee7c58a5b1c",
"type": "Checkpoint",
"name": "Checkpoint",
"startTime": "2020-08-14T13:44:03.05Z",
"finishTime": null,
"currentOperation": null,
"percentComplete": null,
"state": "inProgress",
"result": null,
"resultCode": null,
"changeId": 73,
"lastModified": "0001-01-01T00:00:00",
"workerName": null,
"details": null,
"errorCount": 0,
"warningCount": 0,
"url": null,
"log": null,
"task": null,
"attempt": 1,
"identifier": "Checkpoint"
},
{
"previousAttempts": [
],
"id": "9e7965a8-d99d-5b8f-b47b-3ee7c58a5b1c",
"parentId": null,
"type": "Stage",
"name": "Power Platform Test (orgf92be262)",
"startTime": null,
"finishTime": null,
"currentOperation": null,
"percentComplete": null,
"state": "pending",
"result": null,
"resultCode": null,
"changeId": 1,
"lastModified": "0001-01-01T00:00:00",
"workerName": null,
"order": 2,
"details": null,
"errorCount": 0,
"warningCount": 0,
"url": null,
"log": null,
"task": null,
"attempt": 1,
"identifier": "Import_Test"
},
{
"previousAttempts": [
],
"id": "e54149c5-b5a7-4b82-8468-56ad493224b5",
"parentId": "95f5837e-769d-5a92-9ecb-0e7edb3ac322",
"type": "Checkpoint.Approval",
"name": "Checkpoint.Approval",
"startTime": "2020-08-14T13:44:03.02Z",
"finishTime": null,
"currentOperation": null,
"percentComplete": null,
"state": "inProgress",
"result": null,
"resultCode": null,
"changeId": 72,
"lastModified": "0001-01-01T00:00:00",
"workerName": null,
"details": null,
"errorCount": 0,
"warningCount": 0,
"url": null,
"log": null,
"task": null,
"attempt": 1,
"identifier": "e54149c5-b5a7-4b82-8468-56ad493224b5"
}
],
"lastChangedBy": "00000002-0000-8888-8000-000000000000",
"lastChangedOn": "2020-08-14T13:44:03.057Z",
"id": "86fb4204-9c5e-4e72-bdb1-eefe230480ec",
"changeId": 73,
"url": "https://dev.azure.com/***"
}
Run Code Online (Sandbox Code Playgroud)
下面您可以看到一个名为“Checkpoint.Approval”的步骤。该步骤的ID IS你需要批准的一切批准编号。如果想知道审批是从哪个阶段开始的,那么可以跟踪parentIds,直到parentId属性为null。这将是舞台。
有了这个,您可以成功获得批准 ID 并使用它来批准上述
jessehouwing 的猜测是正确的。现在多阶段还在预览中,相应的SDK/API/extension还没有扩展和提供给公众。
您可能会认为不使用 API 会怎样。我已经检查了后端的相应代码,所有操作都multi-stage approval包含一个必需的参数:approvalId. 相信大家都知道这个值是唯一的,不同的审批图有不同的approvalId值。这意味着,无论您想尝试哪种方法,approvalId都是大麻烦。而且据我所知,到目前为止,还没有任何 api/SDK、第三个工具或扩展可以直接实现此值。
另外,对于multi-stageYAML,其发布流程逻辑与用UI定义的发布不同。因此,所有可以与发布(UI)一起使用的公共 API 都不适合多阶段发布。
我们有一个未公开的api,可以获取Approval多阶段的消息:
https://dev.azure.com/{org}/{project}/_apis/pipelines/approvals/{approvalId}
Run Code Online (Sandbox Code Playgroud)
您可以尝试在不指定approvalId: 的情况下获得上市批准https://dev.azure.com/{org}/{project}/_apis/pipelines/approvals。以及它的响应消息:Query for approvals failed. A minimum of one query parameter is required.\r\nParameter name: queryParameters.这代表你必须告诉系统指定的approval(我之前提到的大麻烦)。
其实,为什么approvalId是必要的部分,是由我们的后端代码结构造成的。我建议您在此处提出有关为多阶段开发 API/SDK 的建议。
| 归档时间: |
|
| 查看次数: |
1046 次 |
| 最近记录: |