Azure Pipelines - Sprint 230 更新

功能

Azure Pipelines 任务使用 Node 16

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

随着 Node 16 生命周期结束日期的 推进,我们已开始使用 Node 20 运行任务。

宣布停用已弃用的任务

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

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

  • AppCenterDistributeV1、
  • AppCenterDistributeV2
  • AzureMonitorV0
  • ChefKnifeV1
  • ChefV1
  • CondaEnvironmentV1
  • DeployVisualStudioTestAgentV2
  • DotNetCoreInstallerV1
  • IISWebAppDeployment
  • QuickPerfTestV1
  • RunJMeterLoadTestV1
  • RunLoadTestV1
  • SqlServerDacpacDeploymentV1
  • XamarinTestCloudV1

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

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

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

对 审批 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 检查。

绕过审批。

Screenshot of Bypass an Approval.

绕过工作时间检查。

Screenshot of Bypass Business Hours check.

绕过调用 Azure 函数检查。 绕过工作时间检查。

Screenshot of Bypass Invoke Azure Function check.

绕过检查后,可以在“检查”面板中看到它。

Screenshot of check bypassed.

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

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

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

通过“需要模板”检查,可以在访问受保护的资源(例如代理池或服务连接)之前强制实施管道从一组已批准的模板扩展。

从此冲刺开始,可以指定位于 GitHub Enterprise Server 存储库中的模板。

Screenshot of required YAML template.

重新运行调用 Azure 函数检查

假设你在多个阶段部署系统。 在部署第二个阶段之前,有一个“批准”和“调用 Azure 函数”检查,该检查在系统已部署的一部分运行理智。

查看审批请求时,你会注意到两天前运行了理智检查。 在此方案中,你可能知道另一个部署影响了理智检查的结果。

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

Screenshot of dynamic check.

注意

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

后续步骤

注意

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

前往 Azure DevOps 并了解一下。

如何提供反馈

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

Make a suggestion

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