Azure DevOps Server 2022 发行说明


| | 开发者社区系统要求和兼容性 | 许可条款 | DevOps 博客 | SHA-256 哈希 |


在本文中,你将找到有关Azure DevOps Server最新版本的信息。

若要详细了解如何安装或升级Azure DevOps Server部署,请参阅Azure DevOps Server要求

若要下载Azure DevOps Server产品,请访问Azure DevOps Server下载页

支持从 Azure DevOps Server 2019 或 Team Foundation Server 2015 或更高版本直接升级到 Azure DevOps Server 2022。 如果 TFS 部署在 TFS 2013 或更早版本上,则需要在升级到 Azure DevOps Server 2022 之前执行一些临时步骤。 有关详细信息,请参阅 安装页


Azure DevOps Server 2022 Update 0.1 修补程序 5 发布日期:2023 年 11 月 14 日

注意

Azure DevOps Server修补程序是累积的,如果未安装修补程序 3,则此修补程序包括对 Azure Pipelines 代理的更新。 安装修补程序 5 后代理的新版本将是 3.225.0。

文件 SHA-256 哈希
devops2022.0.1patch5.exe DC4C7C3F9AF1CC6C16F7562DB4B2295E1318C1A180ADA079D636CCA47A6C1022

我们发布了适用于 Azure DevOps Server 2022 Update 0.1 的修补程序,其中包括以下内容的修补程序。

  • 扩展了 启用 shell 任务参数验证的 PowerShell 任务允许的字符列表。
  • 修复了在单击“取消”按钮后导致服务连接编辑持久化的问题。

Azure DevOps Server 2022 Update 0.1 修补程序 4 发布日期:2023 年 10 月 10 日

注意

Azure DevOps Server修补程序是累积的,如果未安装修补程序 3,则此修补程序包括对 Azure Pipelines 代理的更新。 安装修补程序 5 后代理的新版本将是 3.225.0。

我们发布了适用于 Azure DevOps Server 2022 Update 0.1 的修补程序,其中包括以下内容的修补程序。

  • 修复了通过升级管道执行模型导致管道卡住的 bug。
  • 修复了修补程序升级计算机上的“分析所有者”标识显示为非活动标识的 bug。
  • 生成清理作业包含许多任务,每个任务都会删除生成的项目。 如果这些任务中的任何一个失败,则后续任务均未运行。 我们更改了此行为,以忽略任务失败并尽可能多地清理项目。

Azure DevOps Server 2022 Update 0.1 修补程序 3 发布日期:2023 年 9 月 12 日

注意

此修补程序包括对 Azure Pipelines 代理的更新。 安装修补程序 3 后代理的新版本将是 3.225.0。

我们发布了适用于 Azure DevOps Server 2022 Update 0.1 的修补程序,其中包括以下内容的修补程序。

  • CVE-2023-33136:Azure DevOps Server远程代码执行漏洞。
  • CVE-2023-38155:Azure DevOps Server和 Team Foundation 服务器特权提升漏洞。

Azure DevOps Server 2022 Update 0.1 修补程序 2 发布日期:2023 年 8 月 8 日

我们发布了适用于 Azure DevOps Server 2022 Update 0.1 的修补程序,其中包括以下内容的修补程序。

  • CVE-2023-36869:Azure DevOps Server欺骗漏洞。
  • 修复了 SOAP 调用中可以针对大型元数据 XML 响应引发 ArithmeticException 的 bug。
  • 实现了对服务连接编辑器的更改,以便在组件消除时刷新终结点状态。
  • 解决了相对链接在 markdown 文件中不起作用的问题。
  • 修复了与应用程序层在定义大量标记时启动时间超过正常时间相关的性能问题。
  • 解决了“代理池”页上TF400367错误。
  • 修复了分析所有者标识显示为非活动标识的 bug。
  • 修复了 CronScheduleJobExtension 上的无限循环 bug。

Azure DevOps Server 2022 Update 0.1 修补程序 1 发布日期:2023 年 6 月 13 日

我们发布了适用于 Azure DevOps Server 2022 Update 0.1 的修补程序,其中包括以下内容的修补程序。

  • CVE-2023-21565:Azure DevOps Server欺骗漏洞。
  • CVE-2023-21569:Azure DevOps Server欺骗漏洞。
  • 修复了服务连接编辑器的 bug。 现在,草稿终结点状态在组件消除时刷新。
  • 修复了分离或附加集合无法报告以下错误的错误:“TF246018:数据库操作已超出超时限制,已被取消。

Azure DevOps Server 2022 Update 0.1 发布日期:2023 年 5 月 9 日

Azure DevOps Server 2022.0.1 是 bug 修复汇总。 它包括以前发布的 Azure DevOps Server 2022.0.1 RC 中的所有修补程序。 可以直接安装 Azure DevOps Server 2022.0.1,也可以从 Azure DevOps Server 2022 或 Team Foundation Server 2015 或更高版本升级。

Azure DevOps Server 2022 Update 0.1 RC 发布日期:2023 年 4 月 11 日

Azure DevOps Server 2022.0.1 RC 是 bug 修复的汇总。 它包括以前发布的 Azure DevOps Server 2022 修补程序中的所有修补程序。 可以直接安装 Azure DevOps Server 2022.0.1,也可以从 Azure DevOps Server 2022 或 Team Foundation Server 2015 或更高版本升级。

此版本包括针对以下 bug 的修补程序:

  • 已将 Git 虚拟文件系统 (GVFS) 升级到 v2.39.1.1-micorosoft.2,以解决安全漏洞。
  • 未删除测试数据,导致数据库增长。 通过此修补程序,我们更新了生成保留期,以防止创建新的孤立测试数据。
  • 汇报 AnalyticCleanupJob,作业状态为“已停止”,现在报告“成功”。
  • 修复了“tfx 扩展发布”命令失败并出现“字典中不存在给定键”错误。
  • 实现了一种解决方法,用于在访问团队日历扩展时解决和错误。
  • CVE-2023-21564:Azure DevOps Server跨站点脚本漏洞
  • CVE-2023-21553:Azure DevOps Server远程代码执行漏洞
  • 更新了 MSBuild 和 VSBuild 任务以支持 Visual Studio 2022。
  • 更新加载重新身份验证的方法,以防止 XSS 攻击途径。
  • Azure DevOps Server 2022 代理报告以下错误:VS800069:此服务仅在本地 Azure DevOps 中可用。
  • 修复了通过 Web UI 的搁置集辅助功能问题。
  • 解决了更新Azure DevOps Server管理控制台中的 SMTP 相关设置后,需要重启 tfsjobagent 服务和Azure DevOps Server应用程序池的问题。
  • 在过期日期前 7 天,未发送 PAT 通知。

Azure DevOps Server 2022 补丁 4 发布日期:2023 年 6 月 13 日

我们发布了适用于 Azure DevOps Server 2022 的修补程序,其中包括以下修补程序。

  • CVE-2023-21565:Azure DevOps Server欺骗漏洞。
  • CVE-2023-21569:Azure DevOps Server欺骗漏洞。
  • 修复了服务连接编辑器的 bug。 现在,草稿终结点状态在组件消除时刷新。
  • 修复了分离或附加集合无法报告以下错误的错误:“TF246018:数据库操作已超出超时限制,已被取消。

Azure DevOps Server 2022 补丁 3 发布日期:2023 年 3 月 21 日

我们已 (19.205.33506.1) 发布了适用于 Azure DevOps Server 2022 的修补程序,其中包括以下修补程序。

  • 解决了更新Azure DevOps Server管理控制台中的 SMTP 相关设置后,需要重启 tfsjobagent 服务和Azure DevOps Server应用程序池的问题。
  • 将终结点状态复制到服务终结点编辑面板,而不是通过引用传递它。
  • 以前,在编辑服务连接时,选择“取消”按钮后,编辑内容将保留在 UI 中。 通过此修补程序,我们在通知 SDK 中修复了团队将通知传递设置为 “不传递”时的问题。 在此方案中,如果使用 团队首选项 传递选项配置通知订阅,则团队成员不会收到通知。 无需进一步扩展团队下的标识,以检查成员的偏好。

Azure DevOps Server 2022 补丁 2 发布日期:2023 年 2 月 14 日

我们发布了适用于 Azure DevOps Server 2022 的修补程序,其中包括以下修补程序。

  • CVE-2023-21564:Azure DevOps Server跨站点脚本漏洞
  • 更新了 MSBuild 和 VSBuild 任务以支持 Visual Studio 2022。
  • 更新加载重新身份验证的方法,以防止可能的 XSS 攻击途径。
  • Azure DevOps Server 2022 代理报告以下错误:VS800069:此服务仅在本地 Azure DevOps 中可用。

Azure DevOps Server 2022 修补程序 1 发布日期:2023 年 1 月 24 日

我们发布了适用于 Azure DevOps Server 2022 的修补程序,其中包括以下修补程序。

  • 未删除测试数据,导致数据库增长。 通过此修补程序,我们更新了生成保留期,以防止创建新的孤立测试数据。
  • 汇报 AnalyticCleanupJob,作业状态为“已停止”,现在报告“成功”。
  • 修复了“tfx 扩展发布”命令失败并出现“字典中不存在给定键”错误。
  • 实现了一种解决方法,用于解决访问团队日历扩展时出错的问题。

Azure DevOps Server 2022 发布日期:2022 年 12 月 6 日

Azure DevOps Server 2022 是 bug 修复的汇总。 它包括以前发布的 Azure DevOps Server 2022 RC2 和 RC1 中的所有功能。

Azure DevOps Server 2022 RC2 发布日期:2022 年 10 月 25 日

Azure DevOps Server 2022 RC2 是 bug 修复的汇总。 它包括以前发布的 Azure DevOps Server 2022 RC1 中的所有功能。

注意

已启用新的 SSH RSA 算法

除了我们以前支持的 SHA1 SSH-RSA 之外,RSA 公钥支持已得到改进,以支持 SHA2 公钥类型。

现在支持的公钥类型包括:

  • SSH-RSA
  • RSA-SHA2-256
  • RSA-SHA2-512

所需的操作

如果通过在 文件中显式指定 .ssh/config1 来启用 SSH-RSA,则需要删除 PubkeyAcceptedTypes,或者将其修改为使用 RSA-SHA2-256 或 RSA-SHA2-512,或两者兼有。 可在此处的文档中找到有关仍提示输入密码且GIT_SSH_COMMAND="ssh -v" git fetch未显示相互签名算法时应执行哪些操作的详细信息。

椭圆键支持尚未添加,它仍然是积压工作上要求很高的功能。

Azure DevOps Server 2022 RC1 发布日期:2022 年 8 月 9 日

2022 Azure DevOps Server 新增功能摘要

重要

Azure DevOps Server (2020) 早期版本中已弃用 Warehouse and Analysis Service。 在 2022 Azure DevOps Server,仓库和分析服务已从产品中删除。 分析现在提供产品内报告体验。

Azure DevOps Server 2022 引入了许多新功能。 其中一些要点包括:

还可以跳转到各个部分,查看每个服务的所有新功能:


Boards

交付计划

我们很高兴地宣布,交付计划现已包含在Azure DevOps Server中。 交付计划提供 3 个关键方案:

  • 计划的时间线视图
  • 工作进度
  • 依赖项跟踪

下面是main功能。 筛选、标记和字段条件也是交付计划的一部分。

有两个main视图:压缩视图和展开视图

交付计划 2.0 允许使用开始日期和目标日期或迭代日期在时间线上查看计划中的所有工作项。优先级顺序为开始 & 目标日期,然后是迭代。 这使你可以添加项目组合级别的工作项,如Epic,这些工作项通常未定义到迭代中。

有两个main视图,即压缩视图展开视图。 还可以通过单击计划一侧的放大镜来放大和缩小计划。

有两个main视图,即压缩视图展开视图。 还可以通过单击计划右侧的放大镜来放大和缩小计划。

  • 压缩视图

    压缩视图显示折叠的所有工作项卡片,这意味着并非所有卡信息都显示。 此视图对于计划中工作的总体视图很有用。 若要折叠卡字段,请单击计划右侧放大图标旁边的卡图标。

    下面是在压缩视图和展开视图之间切换的计划示例。

    Gif 以演示压缩视图。

  • 展开的视图

    展开的视图通过计算子项和链接项的数量并显示完成百分比来显示工作项的进度。 当前进度由工作项计数决定。

    下面是使用扩展视图的计划示例。 请注意进度栏和完成百分比。

    使用展开视图的计划示例

依赖项跟踪

依赖项跟踪基于工作项中定义的前置和后续链接。 如果未定义这些链接,则不会显示任何依赖项行。 当工作项存在依赖项问题时,依赖项链接图标显示为红色。

依赖项跟踪,其中依赖项图标为红色,用于显示依赖项

  • 查看依存关系

    特定依赖项通过依赖项面板查看,该面板显示该工作项的所有依赖项,包括方向。 红色感叹号表示依赖项问题。 若要打开面板,只需单击卡右上角的依赖项链接图标。 下面是依赖项的示例。

    查看依赖项的示例

    查看依赖项的另一个示例

  • 依赖项行

    工作项之间的依赖关系通过相应工作项之间的方向箭头线进行可视化。 多个依赖项将显示为多行。 红色线条表示有问题。

    下面是一些示例。

    使用相应工作项之间的方向箭头线可视化的依赖项工作项

    下面是具有多个依赖项的工作项的示例,它也可以使用压缩视图。

    压缩视图中具有多个依赖项的工作项示例

    出现问题时,线条颜色为红色,依赖项图标也是如此。

    示例如下。

    具有多个依赖项的工作项示例

卡片样式

现在可以使用规则(如看板)设置卡片样式。 打开计划设置,然后单击“ 样式”。 在“样式”窗格中,单击“ + 添加样式规则 ”以添加规则,然后单击“ 保存”。 最多可以有 10 个规则,每个规则最多可以有 5 个子句。

样式设置

  • 以前

之前的卡片样式设置

  • 之后

之后的卡片样式设置

若要详细了解交付计划,请在此处检查文档。

删除了工作项中心上的项目

工作项中心是查看已创建或分配给你的项目列表的位置。 它提供多个个性化的透视和筛选器函数来简化列出工作项。 “分配给我”透视表的主要抱怨之一是它显示已删除的工作项。 我们同意删除的工作项不再具有价值,不应在积压工作中。 在此冲刺中,我们将隐藏工作项中心上“分配给我”视图中的所有已删除项目。

工作项中的 开发部分 显示相关提交和拉取请求的列表。 可以查看提交或拉取请求的作者以及关联的时间。 在此更新中,我们修复了作者头像在视图中显示错误的问题。

删除从工作项历史记录下载已删除附件的功能

我们修复了一个小问题,即即使从表单中删除附件,用户也能从工作项历史记录下载附件。 现在,删除附件后,将无法从历史记录中下载附件,也无法从 REST API 响应获取下载 URL。

向 Bug 原因字段添加了“不会修复”值

与所有其他工作项类型一样,Bug 工作项类型具有定义完善的工作流。 每个工作流由三个或更多的“状态”和一个“原因”组成。 原因指定项从一个状态转换到另一个状态的原因。 在此更新中,我们为敏捷过程中的 Bug 工作项类型添加了 “不会修复 原因”值。 将 Bug 从“新建”或“活动”移动到“已解决”时,可以使用 该值。 可以在Azure Boards文档中详细了解如何定义、捕获、会审和管理软件 bug

管道

在经典版本中删除每个管道保留策略

现在可以在 Azure DevOps 项目设置中为经典生成和 YAML 管道配置保留策略。 不再支持经典生成管道的按管道保留规则。 虽然这是为 YAML 管道配置保留的唯一方法,但也可以基于每个管道为经典生成管道配置保留。 在即将发布的版本中,我们删除了经典生成管道的所有每管道保留规则。

这意味着:任何过去具有每个管道保留规则的经典生成管道都将受项目级保留规则的约束。

为了确保在升级时不会丢失任何生成,我们将为升级时不存在租约的所有现有版本创建租约。

建议在升级后检查项目级保留设置。 如果管道专门需要自定义规则,则可以在管道中使用自定义任务。 有关通过任务添加保留租约的信息,请参阅 设置生成、发布和测试保留策略文档

管道中环境变量的新控件

Azure Pipelines 代理会扫描标准输出中的特殊 日志记录命令 并执行它们。 命令setVariable可用于设置变量或修改以前定义的变量。 系统外部的参与者可能会利用这一点。 例如,如果管道有一个在 ftp 服务器中打印文件列表的步骤,则有权访问 ftp 服务器的人员可以添加新文件,其名称包含 setVariable 命令,并导致管道更改其行为。

我们有许多用户依赖于在其管道中使用日志记录命令设置变量。 在此版本中,我们将进行以下更改,以降低意外使用 setVariable 命令的风险。

  • 我们为任务作者添加了一个新构造。 通过在 中 task.json包括如下代码片段,任务作者可以控制任务是否设置了任何变量。
{
    "restrictions": {
        "commands": {
            "mode": "restricted"
        },
        "settableVariables": {
            "allowed": [
                "myVar",
                "otherVar"
            ]
        }
    },
}​ 
  • 此外,我们正在更新大量内置任务,例如 ssh,以便它们不能被利用。

  • 最后,现在可以使用 YAML 构造来控制步骤是否可以设置变量。

steps:
- script: echo hello
  target:
    settableVariables: none
steps:
- script: echo hello
  target:
    settableVariables:
    - things
    - stuff

为分叉生成生成不受限制的令牌

GitHub Enterprise 用户通常使用分叉来参与上游存储库。 当 Azure Pipelines 从 GitHub Enterprise 存储库的分支生成贡献时,它会限制授予作业访问令牌的权限,并且不允许此类作业访问管道机密。 有关生成分叉的安全性的详细信息,请参阅 我们的文档

在此类封闭环境中,这可能比所需的限制性更大,在这些环境中,用户仍可能受益于内部源协作模型。 虽然可以在管道中配置设置,使机密可用于分支,但没有设置来控制作业访问令牌范围。 在此版本中,我们让你能够控制生成常规作业访问令牌,即使是针对分叉的生成也是如此。

可以从管道编辑器中的 触发器 更改此设置。 在更改此设置之前,请确保完全了解启用此配置的安全含义。

为分叉生成生成不受限制的令牌

在 YAML 管道中将存储库作为受保护资源

可以组织 Azure DevOps 项目来托管多个子项目 - 每个子项目都有自己的 Azure DevOps Git 存储库和一个或多个管道。 在此结构中,可能需要控制哪些管道可以访问哪些存储库。 例如,假设在同一项目中有两个存储库 A 和 B,以及通常生成这些存储库的两个管道 X 和 Y。 你可能想要阻止管道 Y 访问存储库 A。通常,你希望 A 的参与者控制他们想要提供访问权限的管道。

虽然这在 Azure Git 存储库和管道中部分可行,但没有管理它的经验。 此功能解决了这种差距。 Azure Git 存储库现在可以被视为 YAML 管道中的 受保护资源 ,就像服务连接和代理池一样。

作为存储库 A 的参与者,可以向存储库添加检查和管道权限。 为此,请导航到项目设置,选择“存储库”,然后选择存储库。 你会注意到一个名为“检查”的新菜单,可在其中以 Azure 函数的形式配置任何现成检查或自定义检查。

添加检查

在“安全性”选项卡下,可以管理可以访问存储库的管道列表。

在“安全”选项卡中管理管道列表

每当 YAML 管道使用存储库时,Azure Pipelines 基础结构都会验证并确保满足所有检查和权限。

注意

这些权限和检查仅适用于 YAML 管道。 经典管道无法识别这些新功能。

对变量组和安全文件的权限和检查

可以在 YAML 管道中使用不同类型的 共享资源 。 示例包括服务连接、变量组、安全文件、代理池、环境或存储库。 为了防止管道访问资源,资源的所有者可以配置权限并检查该资源。 每次管道尝试访问资源时,都会评估所有配置的权限和检查。 这些保护已在服务连接、环境和代理池上提供一段时间。 它们最近已添加到 存储库。 在此版本中,我们将向变量组和安全文件添加相同的保护。

若要将对变量组或安全文件的访问权限限制为一小组管道,请使用 管道权限 功能。

我的机密变量

若要配置每次运行管道时都应评估的检查或审批,请使用 审批和检查库 功能。

添加检查审批

自动创建环境的更改

创作 YAML 管道并引用不存在的环境时,Azure Pipelines 会自动创建环境。 此自动创建可以在用户上下文或系统上下文中进行。 在以下流中,Azure Pipelines 知道执行操作的用户:

  • 在 Azure Pipelines Web 体验中使用 YAML 管道创建向导,并引用尚未创建的环境。
  • 使用 Azure Pipelines Web 编辑器更新 YAML 文件,并在添加对不存在的环境的引用后保存管道。 在上述每种情况下,Azure Pipelines 都清楚地了解执行操作的用户。 因此,它会创建环境并将用户添加到环境的管理员角色。 此用户具有管理环境和/或将其他用户纳入管理环境的各种角色的所有权限。

在以下流中,Azure Pipelines 没有有关创建环境的用户的信息:使用另一个外部代码编辑器更新 YAML 文件,添加对不存在的环境的引用,然后触发持续集成管道。 在这种情况下,Azure Pipelines 并不了解用户。 以前,我们通过将所有项目参与者添加到环境的管理员角色来处理这种情况。 然后,项目的任何成员都可以更改这些权限,并阻止其他人访问环境。

我们收到了你关于向项目的所有成员授予环境管理员权限的反馈。 当我们听取你的反馈时,我们听说,如果不清楚执行操作的用户是谁,则不应自动创建环境。 在此版本中,我们更改了自动创建环境的方式:

  • 今后,如果环境不存在且用户上下文未知,则管道运行不会自动创建环境。 在这种情况下,管道将失败并 出现“找不到环境”错误。 在管道中使用它之前,需要预先创建具有正确安全性的环境并检查配置。
  • 具有已知用户上下文的管道仍将像过去一样自动创建环境。
  • 最后,应注意的是,添加自动创建环境的功能只是为了简化 Azure Pipelines 入门的过程。 它适用于测试方案,而不是生产方案。 应始终使用正确的权限和检查预先创建生产环境,然后在管道中使用它们。

从生成管道中删除见解对话

根据你的反馈,导航生成管道时显示的任务/管道见解对话框已被删除,以改进工作流。 管道分析仍然可用,以便获得所需的见解。

仅当使用独占锁检查时,才支持顺序部署而不是最新部署

在 YAML 管道中,检查用于控制 受保护资源上阶段的执行。 可以使用的常见检查之一是独占锁检查。 此检查仅允许从管道进行单个运行。 当多个运行尝试同时部署到环境时,检查会取消所有旧运行,并允许部署最新的运行。

如果发布是累积版本的,并且包含以前运行的所有代码更改,则取消旧运行是一种很好的方法。 但是,某些管道中的代码更改不是累积的。 使用此新功能,可以选择允许所有运行继续并按顺序部署到环境,或保留以前取消旧运行并仅允许最新运行的行为。 可以使用管道 YAML 文件中名为 lockBehavior 的新属性指定此行为。 值 sequential 表示所有运行都按顺序获取受保护资源的锁。 值 runLatest 表示只有最新的运行才能获取资源的锁。

若要将独占锁检查用于sequential部署或 runLatest,请执行以下步骤:

  1. 在环境 (或其他受保护资源) 上启用独占锁检查。
  2. 在管道的 YAML 文件中,指定名为 lockBehavior的新属性。 可以针对整个管道或给定阶段指定此值:

在舞台上设置:

stages:
- stage: A
  lockBehavior: sequential
  jobs:
  - job: Job
    steps:
    - script: Hey!

在管道上设置:

lockBehavior: runLatest
stages:
- stage: A
  jobs:
  - job: Job
    steps:
    - script: Hey!

如果未指定 , lockBehavior则假定 runLatest为 。

支持魁北克版 ServiceNow

Azure Pipelines 与 ServiceNow 的现有集成。 集成依赖于 ServiceNow 中的应用和 Azure DevOps 中的 扩展 。 现在,我们已更新应用,以使用魁北克版 ServiceNow。 经典管道和 YAML 管道现在都适用于魁北克。 若要确保此集成正常工作,请从 Service Now 存储升级到应用 (4.188.0) 的新版本。 有关详细信息,请参阅 与 ServiceNow 更改管理集成

新的 YAML 条件表达式

使用 ${{ else }}${{ elseif }} 表达式可以更轻松地在 YAML 文件中编写条件表达式。 下面是如何在 YAML 管道文件中使用这些表达式的示例。

steps:
- script: tool
  env:
    ${{ if parameters.debug }}:
      TOOL_DEBUG: true
      TOOL_DEBUG_DIR: _dbg
    ${{ else }}:
      TOOL_DEBUG: false
      TOOL_DEBUG_DIR: _dbg
variables:
  ${{ if eq(parameters.os, 'win') }}:
    testsFolder: windows
  ${{ elseif eq(parameters.os, 'linux' }}:
    testsFolder: linux
  ${{ else }}:
    testsFolder: mac

支持路径筛选器中的通配符

在管道 YAML 文件中为 CI 或 PR 触发器指定包含和排除分支时,可以使用通配符。 但是,指定路径筛选器时无法使用它们。 例如,不能包含与 匹配 src/app/**/myapp*的所有路径。 这已被 一些客户指出为不便。 此更新填补了此空白。 现在,在指定路径筛选器时,可以使用 (***?) 的野生卡字符。

管道的默认代理规范将是 Windows-2022

映像 windows-2022 已准备好为 Azure Pipelines Microsoft 托管代理中的标签的默认版本 windows-latest 。 到目前为止,此标签指向 windows-2019 代理。 从 1 月 17 日开始,此更改将在几周内推出。 我们计划在 3 月前完成迁移。

Azure Pipelines 自 2021 年 9 月以来一直受 windows-2022 支持。 我们已监视你的反馈以提高 windows-2022 图像稳定性,现在我们准备将其设置为最新。

windows-2022 图像包括 Visual Studio 2022。 有关 和 windows-2019之间windows-2022差异的完整列表,请访问 GitHub 问题。 有关映像上安装的软件的完整列表,请在此处检查。

管道文件夹重命名验证权限

可以重命名包含管道的文件夹。 仅当用户对文件夹中包含的至少一个管道具有编辑权限时,重命名文件夹才会成功。

Pipelines 代理运行时升级规划

什么是管道代理?

Azure DevOps 管道代理是在管道主机上运行以执行管道作业的软件产品。 它在 Microsoft 托管代理、规模集代理和自承载代理上运行。 在后一种情况下,请自行安装。 管道代理由在 .NET) 中实现的侦听器和辅助角色 (组成,辅助角色运行在 Node 或 PowerShell 中实现的任务,因此为它们托管这些运行时。

即将升级到 .NET 6 & Red Hat 6 弃用

随着 .NET 6 的发布,我们能够利用其新的跨平台功能。 具体而言,我们将能够提供 Apple Silicon 和 Windows Arm64 的本机兼容性。 因此,我们计划在未来几个月内将管道代理 (侦听器和辅助角色) 迁移到 .NET 6。

由于存在许多限制,我们将从代理 2022 年 4 月 30 日取消对 Red Hat Enterprise Linux 6 的支持。

汇报 Azure 文件复制任务

我们将推出新版本的 Azure 文件复制任务。 此任务用于将文件复制到 Microsoft Azure 存储 blob 或虚拟机 (VM) 。 新版本具有社区经常请求的几个更新:

  • AzCopy 工具的版本已更新到 10.12.2,它支持文件内容类型。 因此,在复制 PDF、Excel、PPT 或某个受支持的 mime 类型时,文件的内容类型设置正确。

  • 使用新版本的 AzCopy,还可以配置一个设置,以在目标类型为 Azure Blob 时清除目标。 设置此选项将删除该容器中的所有文件夹/文件。 或者,如果提供了 Blob 前缀,则将删除该前缀中的所有文件夹/文件。

  • 新版本的任务依赖于安装在代理上的 Az 模块,而不是 AzureRM 模块。 在某些情况下,使用任务时,这将删除不必要的警告。

这些更改是此任务的主要版本更新的一部分。 必须显式更新管道才能使用新版本。 我们选择更新主版本,以确保不会中断任何仍依赖于 AzureRM 模块的管道。

管道详细信息视图的新扩展点

我们添加了两个新的扩展点,你可以在扩展中定位这些扩展点。 通过这些扩展点,可以在管道标头中添加自定义按钮,并在管道文件夹上添加自定义菜单:

  • 管道标头中的自定义按钮: ms.vss-build-web.pipelines-header-menu
  • 管道文件夹上的自定义菜单: ms.vss-build-web.pipelines-folder-menu

若要使用这些新的扩展点,只需在 Azure DevOps 扩展的 vss-extension.json 清单文件中添加面向它们的新贡献即可。

例如:

"contributions": [
        {
            "id": "pipelinesFolderContextMenuTestItem",
            "type": "ms.vss-web.action",
            "description": "Custom menu on a pipeline folder",
            "targets": [
                "ms.vss-build-web.pipelines-folder-menu"
            ],
            "properties": {
                "text": "Test item",
                "title": "ms.vss-code-web.source-item-menu",
                "icon": "images/show-properties.png",
                "group": "actions",
                "uri": "main.html",
                "registeredObjectId": "showProperties"
            }
        },
        {
            "id": "pipelinesHeaderTestButton",
            "type": "ms.vss-web.action",
            "description": "Custom button in the pipeline header",
            "targets": [
                "ms.vss-build-web.pipelines-header-menu"
            ],
            "properties": {
                "text": "Test item",
                "title": "ms.vss-code-web.source-item-menu",
                "icon": "images/show-properties.png",
                "group": "actions",
                "uri": "main.html",
                "registeredObjectId": "showProperties"
            }
        }
]

结果为:

  • 管道标头中的“自定义”按钮

    管道标头中的“自定义”按钮

  • 管道文件夹上的自定义菜单

    管道文件夹上的自定义菜单

改进了迁移到 Azure DevOps Services

运行从 Azure DevOps Server 到 Azure DevOps Services 的导入时,必须考虑 Azure DevOps 不再支持每个管道的保留规则。 通过此更新,我们在从本地Azure DevOps Server迁移到 Azure DevOps Services 时删除了这些策略。 若要详细了解如何配置保留策略,请参阅 有关为生成、发布和测试设置保留策略的文档

对管道运行 REST API 的改进

以前, Pipelines Runs REST API 仅返回存储库 self 。 通过此更新,Pipelines Runs REST API 将返回生成的所有存储库资源。

扩展的 YAML 管道模板现在可以传递阶段、作业和部署的上下文信息

在此更新中,我们将为 jobdeploymentstage YAML 管道组件添加一个新templateContext属性,该组件旨在与模板结合使用。

下面是使用 templateContext的方案:

  • 使用模板来减少代码重复或 提高管道的安全性

  • 模板采用 、 jobs或 的列表stages作为参数deployments

  • 该模板处理输入列表,并针对每个阶段、作业或部署执行一些转换。 例如,它设置运行每个作业的环境,或添加额外的步骤来强制实施符合性

  • 处理过程要求管道作者将其他信息传递到列表中每个阶段、作业或部署的模板中

接下来举例说明。 假设你正在创作一个管道,该管道运行用于拉取请求验证的端到端测试。 你的目标是仅测试系统的一个组件,但是,由于你计划运行端到端测试,因此你需要一个环境,其中更多的系统组件可用,并且你需要指定其行为。

你意识到其他团队也有类似的需求,因此你决定将设置环境的步骤提取到模板中。 其代码如下所示:

testing-template.yml

parameters: 
- name: testSet
  type: jobList

jobs:
- ${{ each testJob in parameters.testSet }}:
  - ${{ if eq(testJob.templateContext.expectedHTTPResponseCode, 200) }}:
    - job:
      steps:
        - script: ./createSuccessfulEnvironment.sh ${{ testJob.templateContext.requiredComponents }}
        - ${{ testJob.steps }}
  - ${{ if eq(testJob.templateContext.expectedHTTPResponseCode, 500) }}:
    - job:
      steps:
        - script: ./createRuntimeErrorEnvironment.sh ${{ testJob.templateContext.requiredComponents }}
        - ${{ testJob.steps }}

模板的作用是,对于 参数中的每个 testSet 作业,它将 ${{ testJob.templateContext.requiredComponents }} 指定的系统组件的响应设置为返回 ${{ testJob.templateContext.expectedHTTPResponseCode }}}。

然后,可以创建自己的管道,如以下示例所示进行扩展 testing-template.yml

sizeapi.pr_validation.yml

trigger: none

pool:
  vmImage: ubuntu-latest

extends:
  template: testing-template.yml
  parameters:
    testSet:
    - job: positive_test
      templateContext:
        expectedHTTPResponseCode: 200
        requiredComponents: dimensionsapi
      steps:
      - script: ./runPositiveTest.sh
    - job: negative_test
      templateContext:
        expectedHTTPResponseCode: 500
        requiredComponents: dimensionsapi
      steps:
      - script: ./runNegativeTest.sh

此管道运行两个测试,一个是正测试,一个是负面测试。 这两个测试都要求 dimensionsapi 组件可用。 作业 positive_test 需要 dimensionsapi 返回 HTTP 代码 200,而 negative_test 预期返回 HTTP 代码 500。

支持将组托管服务帐户用作代理服务帐户

Azure Pipelines 代理现在支持 Windows 上自承载代理上的组托管服务帐户。

组托管服务帐户 为充当服务帐户的域帐户提供集中式密码管理。 Azure Pipelines 代理可以识别这种类型的帐户,因此在配置过程中不需要密码:

.\config.cmd --url https://dev.azure.com/<Organization> `
             --auth pat --token <PAT> `
             --pool <AgentPool> `
             --agent <AgentName> --replace `
             --runAsService `
             --windowsLogonAccount <DOMAIN>\<gMSA>

信息性运行

信息性运行告知 Azure DevOps 无法检索 YAML 管道的源代码。 此类运行如下所示。

最近运行的管道

Azure DevOps 检索 YAML 管道的源代码以响应外部事件(例如,推送提交)或响应内部触发器(例如,如果存在代码更改并启动计划运行),检查。 当此步骤失败时,系统将创建一个信息性运行。 仅当管道的代码位于 GitHub 或 BitBucket 存储库中时,才会创建这些运行。

检索管道的 YAML 代码可能由于以下原因而失败:

  • 存储库提供程序遇到中断
  • 请求限制
  • 身份验证问题
  • 无法检索管道的 .yml 文件的内容

详细了解 信息性运行

生成定义 REST API retentionRules 属性已过时

生成定义 REST APIBuildDefinition 响应类型中 retentionRules , 属性现在标记为已过时,因为此属性始终返回空集。

Repos

新的 TFVC 页面

我们一直在更新 Azure DevOps 中的各种页面,以使用新的 Web 平台,目的是使体验在各种服务中更加一致且更易于访问。 TFVC 页面已更新为使用新的 Web 平台。 在此版本中,我们将使新的 TFVC 页面正式发布。

禁用存储库

客户经常请求一种方法来禁用存储库并阻止用户访问其内容。 例如,你可能希望在以下情况下执行此操作:

  • 在存储库中发现了一个机密。
  • 第三方扫描工具发现存储库不符合要求。

在这种情况下,你可能希望在解决问题时暂时禁用存储库。 通过此更新,如果具有 “删除存储库” 权限,则可以禁用存储库。 通过禁用存储库,可以:

  • 可以在存储库列表中列出存储库
  • 无法读取存储库的内容
  • 无法更新存储库的内容
  • 在尝试访问 Azure Repos UI 中的存储库时,会看到一条消息,指出存储库已被禁用

执行必要的缓解步骤后,具有 “删除存储库” 权限的用户可以重新启用存储库。 若要禁用或启用存储库,请转到“项目设置”,选择“存储库”,然后选择特定的存储库。

禁用存储库

将分支创建者配置为不对其分支获取“管理权限”

创建新分支时,将获得该分支的“管理权限”。 此权限允许更改其他用户的权限或允许其他用户参与该分支。 例如,分支创建者可以使用此权限允许另一个外部用户更改代码。 或者,它们可能允许管道 (生成服务标识) 更改该分支中的代码。 在具有更高合规性要求的某些项目中,用户不应进行此类更改。

通过此更新,您可以配置团队项目中的任何和所有存储库,并限制分支创建者获取“管理权限”权限。 为此,请导航到项目设置,选择“存储库”,然后选择“所有存储库或特定存储库的设置”。

所有存储库设置

此设置默认为“打开”,以模拟现有行为。 但是,如果想要使用此新的安全功能,可以将其关闭。

阻止分叉用户对其上游 PR 进行投票

使用 Azure Repos,对存储库具有“读取”权限的用户可以创建存储库分支并在其分叉中进行更改。 若要提交拉取请求以及对上游所做的更改,用户需要对上游“参与拉取请求”权限。 但是,此权限还控制谁可以在上游存储库中对拉取请求进行投票。 因此,如果不是存储库参与者的用户最终可以提交拉取请求并导致该请求合并,具体取决于分支策略的设置方式。

在提升内部源模型的项目中,分叉和贡献是一种常见模式。 为了进一步保护和推广此模式,我们将对拉取请求进行投票的权限从“参与拉取请求”更改为“参与”。 但是,默认情况下不会在所有项目中进行此更改。 必须选择加入并在存储库中选择名为“严格投票模式”的新策略来切换此权限。 如果依赖于 Azure Repos 中的分叉,我们建议这样做。

存储库设置

报表

图表小组件中可用的分组依据标记

默认情况下,“按标记分组”图表小组件现在可供所有客户使用。 使用图表小组件时,现在有一个选项可用于标记。 用户可以通过选择小组件中的所有标记或一组标记来可视化其信息。


图表小组件中可用的分组依据标记

在进度小组件中显示自定义工作项类型

以前,你无法查看在烧毁小组件中配置的自定义工作项类型,以及按自定义字段求和或计数的自定义工作项类型。 通过此更新,我们修复了此问题,现在你可以在进度小组件中看到自定义工作项类型。


反馈

我们期待你的宝贵意见和建议! 你可以报告问题或提供想法,并通过开发者社区跟踪它,并获取有关 Stack Overflow 的建议。


返回页首