Azure Pipelines - Sprint 230 更新

Features

Azure Pipelines 任务使用 Node 16

管道中的任务使用运行器执行,主要情况下使用Node.js。 利用 Node 作为运行程序的 Azure Pipelines 任务现在都使用 Node 16。 由于 Node.js 16 是第一个原生支持 Apple silicon 的 Node.js 版本,它还完成了对 macOS 的完整任务支持。 在 Apple 硅上运行的代理不需要 Rosetta 运行。

考虑到 Node 16 的生命周期结束日期已提前,我们已开始使用 Node 20 运行任务。

宣布停用已弃用的任务

Azure Pipelines 有许多已弃用的任务。 弃用的任务将于 2024 年 1 月 31 日停用。 为了帮助你识别正在使用已弃用任务的管道,如果使用此类任务,管道将显示警告。 我们更新了任务参考,以清楚地传达弃用状态和停用日期。

以下任务已弃用,并开始发出警告:

  • AppCenterDistributeV1、
  • AppCenterDistributeV2
  • AzureMonitorV0
  • ChefKnifeV1
  • ChefV1
  • CondaEnvironmentV1
  • DeployVisualStudioTestAgentV2
  • DotNetCoreInstallerV1
  • IIS Web 应用程序部署
  • QuickPerfTestV1
  • RunJMeterLoadTestV1
  • RunLoadTestV1
  • SqlServerDacpacDeploymentV1
  • XamarinTestCloudV1

更新管道以在 2024 年 1 月 31 日之前使用较新的任务版本或替代项。

AzureRmWebAppDeployment 任务支持Microsoft Entra ID 身份验证

AzureRmWebAppDeploymentV3 和 AzureRmWebAppDeployment@4 任务已更新,以支持 禁用基本身份验证的应用服务。 如果在App 服务上禁用基本身份验证,AzureRmWebAppDeploymentV3/4 任务将使用 Microsoft Entra ID 身份验证来执行到 App 服务 Kudu 终结点的部署。 这需要在代理上安装最近版本的 msdeploy.exe,它在 windows-2022 和最新的 托管代理 上是已满足的条件(请参阅 任务参考)。

对审批 REST API 的改进

我们通过在搜索结果中包含用户所属的组,改进了定位分配给用户的审批。

审批现在包含有关其所属管道运行过程的信息。

例如,以下 GET REST API 调用 https://dev.azure.com/fabrikam/FabrikamFiber/_apis/pipelines/approvals?api-version=7.2-preview.2&top=1&assignedTo=john@fabrikam.com&state=pending 返回

{
    "count": 1,
    "value":
    [
        {
            "id": "7e90b9f7-f3f8-4548-a108-8b80c0fa80e7",
            "steps":
            [],
            "status": "pending",
            "createdOn": "2023-11-09T10:54:37.977Z",
            "lastModifiedOn": "2023-11-09T10:54:37.9775685Z",
            "executionOrder": "anyOrder",
            "minRequiredApprovers": 1,
            "blockedApprovers":
            [],
            "_links":
            {
                "self":
                {
                    "href": "https://dev.azure.com/fabrikam/26dcfaeb-d8fe-495c-91cb-fec4acb44fbb/_apis/pipelines/approvals/7e80b987-f3fe-4578-a108-8a80c0fb80e7"
                }
            },
            "pipeline":
            {
                "owner":
                {
                    "_links":
                    {
                        "web":
                        {
                            "href": "https://dev.azure.com/buildcanary/26dcfaeb-d8fe-495c-91cb-fec4acb44fbb/_build/results?buildId=73222930"
                        },
                        "self":
                        {
                            "href": "https://dev.azure.com/buildcanary/26dcfaeb-d8fe-495c-91cb-fec4acb44fbb/_apis/build/Builds/73222930"
                        }
                    },
                    "id": 73222930,
                    "name": "20231109.1"
                },
                "id": "4597",
                "name": "FabrikamFiber"
            }
        }
    ]
}

跳过审批流程和检查程序

审批和检查 有助于保护对重要资源(例如服务连接、存储库或代理池)的访问。 常见用例是在部署到生产环境时使用审批和检查,并希望保护 ARM 服务连接。

假设你在服务连接上添加了以下检查:审批、工作时间检查和调用 Azure 函数检查(用于在不同区域之间强制实施延迟)。

现在,假设你必须执行一次热修复部署。 启动管道运行后,它不会继续,而是会等待大部分检查完成。 你负担不起等待审批和检查完成。

在此次冲刺中,我们已经实现了绕过当前正在运行的审批和检查功能,以便您能够完成快速修复。

可以绕过运行审批、工作时间、调用 Azure 函数和调用 REST API 检查。

绕过审批。

绕过审批的屏幕截图。

绕过营业时间检查。

“绕过营业时间”检查的屏幕截图。

绕过对 Azure 函数的调用检查。 绕过营业时间检查。

绕过调用 Azure 函数检查的屏幕截图。

当检查被绕过时,可以在检查面板中看到它。

已绕过检查的屏幕截图。

只有当你是定义检查的资源的管理员时,才能绕过检查。

在必需的模板检查中支持 GitHub 企业服务器

模板 是一种安全机制,可用于控制组织中的管道的各个阶段、作业和步骤。

“需要模板检查”功能允许您强制要求管道在访问受保护的资源(例如代理池或服务连接)之前必须扩展自一组已批准的模板。

从这次迭代开始,您可以指定位于 GitHub Enterprise Server 存储库中的模板。

所需 YAML 模板的屏幕截图。

重新运行 Azure 函数调用检查

假设你在多个阶段部署系统。 在部署第二个阶段之前,会进行审批和调用 Azure 函数的检查,以在已部署的系统部分上运行合理性检查。

查看审批请求时,你会注意到完整性检查在两天前进行。 在这种情况下,你可能知道另一个部署影响了健全性检查的结果。

通过此更新,您可以重新运行对 Azure 函数的调用以及对 REST API 检查功能的调用。 此功能仅适用于成功且没有重试的检查。

动态检查的屏幕截图。

注释

只有当您是定义检查的资源的管理员时,才能重新运行检查。

后续步骤

注释

这些功能将在未来两到三周内推出。

请去 Azure DevOps 上看看。

如何提供反馈

我们很乐意听到你对这些功能的看法。 使用帮助菜单报告问题或提供建议。

提出建议

你还可以在 Stack Overflow 上获取社区的建议和问题解答。