增强的 YAML 预览 API 和为通用包配置上游源

在此冲刺中,我们将推出一个新的 API 终结点,用于检索最终的 YAML 正文。 我们还很高兴地宣布,我们添加了在此版本中为通用包配置上游源的功能。

有关详细信息, 请查看下面的功能 列表。

功能

Azure Boards

Azure Pipelines

Azure Artifacts

Azure Boards

积压工作 (backlog) 和板上的系统工作项类型

我们 启动了一项功能的私人预览版 ,可用于将系统工作项类型添加到所选积压工作级别。 从历史上看,这些工作项类型仅在查询中可用。

处理 工作项类型
敏捷 问题
Scrum 障碍
CMMI 更改请求
问题
审阅
风险

我们很高兴地宣布,该功能现已推出预览版,并且已正式发布给所有组织。 将系统工作项类型添加到积压工作级别非常简单。 只需进入自定义过程,然后单击 “积压工作级别”选项卡。选择积压工作级别的选择(例如:要求积压工作),然后选择 编辑选项。 然后添加工作项类型。

backlogs

审核日志记录事件

我们在审核日志中添加了一个新事件,帮助客户更好地跟踪相关更改。 每当选取列表上的值发生更改时,都会记录事件。 对选取列表字段所做的更改通常是对进程进行的最常见更改。 使用此新事件,组织管理员可以更好地跟踪何时和谁对这些字段进行更改。

audit-logs

Azure Boards GitHub 应用存储库限制已提升(个人预览版)

如果从 GitHub 市场使用 Azure Boards 应用程序 ,可以连接到的 GitHub 存储库限制为 100 个。  对于可以拥有 100 多个存储库的大型组织来说,这成为阻止程序。 在此冲刺中,我们更改了 Azure Boards 连接到 GitHub 存储库的方式,以支持超过 100 个。 如果当前达到 100 个存储库限制,请告知我们,我们可以启用该功能来增加该限制并取消阻止你。 请使用 组织名称(dev.azure.com/{organization})直接向 我们发送电子邮件。

合并拉取请求时自定义工作项状态(个人预览版)

并非所有工作流都是相同的。 某些客户希望在拉取请求完成后关闭其相关工作项。 其他人希望将工作项设置为在关闭之前要验证的另一个状态。 我们应该同时允许这两者。

从冲刺 174 开始,我们有了一项新功能,可在合并和完成拉取请求时将工作项设置为所需状态。 为此,我们将扫描拉取请求说明,并查找状态值,后跟工作项的 #提及。 在此示例中,我们将两个用户情景设置为“已解决”并关闭两个任务。

work-item-state

此功能已经很长一段时间了,我们很高兴看到你的想法。 首先,我们只是扫描拉取请求说明,不包括任何用户界面更改。 我们希望先获得反馈,然后再进一步投资。

如果你有兴趣参与个人预览版 ,请直接向我们发送电子邮件。 不要忘记包括你的组织(dev.azure.com/{organization})。

Azure Pipelines

管道图像公告

注意

Azure Pipelines 映像会不断更新,以便为用户提供尽可能最佳的体验。 这些例行更新主要针对的是解决 bug 或过时软件。 它们通常不会对管道产生任何影响,但这种情况并不总是如此。 如果管道依赖于已删除或更新映像上的软件片段,则管道可能会受到影响。

若要了解有关 Windows、Linux 和 macOS 映像即将推出的更新的详细信息,请阅读以下公告:

若要查看即将发布的发行说明(预发行)和部署的更改,请订阅以下发行说明:

已改进代理日志上传

当代理停止与 Azure Pipelines 服务器通信时,它正在运行的作业将放弃。 如果碰巧正在查看流式处理控制台日志,则可能在代理停止响应之前,已经获取了一些有关代理情况的线索。 但是,如果没有,或者刷新了页面,这些控制台日志就消失了。 在此版本中,如果代理在发送完整日志之前停止响应,我们将控制台日志保留为下一个最佳状态。 控制台日志限制为每个行 1000 个字符,有时可能不完整,但它们比不显示任何内容更有用! 检查这些日志可能有助于排查自己的管道问题,在帮助进行故障排除时,它肯定会帮助我们的支持工程师。

选择性地装载只读容器卷

在 Azure Pipelines 中运行容器作业时,包含工作区、任务和其他材料的多个卷将映射为卷。 这些卷默认为读取/写入访问权限。 为了提高安全性,可以通过在 YAML 中更改容器规范来装载只读卷。 下面的 mountReadOnly 每个键可以设置为 true 只读(默认值为 false)。

resources:
  containers:
    - container: example
      image: ubuntu:18.04
      mountReadOnly:
        externals: true
        tasks: true
        tools: true
        work: false

对容器启动/停止的精细控制

一般情况下,我们建议允许 Azure Pipelines 管理作业和服务容器的生命周期。 但是,在某些情况下,你可能想要自行启动和停止它们。 在此版本中,我们已将该功能内置到 Docker 任务中。

下面是使用新功能的示例管道:

resources:
  containers:
    - container: builder
      image: ubuntu:18.04
steps:
  - script: echo "I can run inside the container (it starts by default)"
    target:
      container: builder
  - task: Docker@2
    inputs:
      command: stop
      container: builder
# if any step tried to run in the container here, it would fail

此外,我们还在管道变量 Agent.ContainerMapping中包含容器列表。 例如,如果要检查脚本中的容器列表,则可以使用此方法。 它包含字符串化的 JSON 对象,该对象将资源名称(上例中的“builder”)映射到代理管理的容器 ID。

为每个步骤解压缩任务包

代理运行作业时,它首先下载作业步骤所需的所有任务捆绑包。 通常情况下,为了提高性能,即使任务在多个步骤中使用,每个作业也会解压缩一次任务。 如果担心不受信任的代码更改未压缩的内容,可以通过让代理在每个用法上解压缩任务来消除一点性能。 若要启用此模式,在配置代理时传递 --alwaysextracttask

通过限制访问令牌的范围来改进版本安全性

我们基于我们的计划来增强 Azure Pipelines 的安全设置,现在支持限制发布访问令牌的范围。

在发布中运行的每个作业都获取访问令牌。 任务和脚本使用该访问令牌回调到 Azure DevOps。 例如,我们使用访问令牌获取源代码、下载项目、上传日志、测试结果或对 Azure DevOps 进行 REST 调用。 为每个作业都生成一个新的访问令牌,该令牌将在作业完成后过期。

通过此更新,我们将 通过限制访问令牌 的范围并扩展到经典版本来改进管道安全性。

默认情况下,新项目和组织将启用此功能。 对于现有组织,必须在组织设置>管道>设置中启用它。 >将作业授权范围限制为发布管道的当前项目。 在此处了解更多信息。

YAML 预览版 API 增强功能

在几个短跑之前,我们引入了 预览管道的完整 YAML 的功能,而无需运行它。 通过此更新,我们创建了一个用于预览功能的专用新 URL。 现在,可以 POST 检索 https://dev.azure.com/{org}/{project}/_apis/pipelines/{pipelineId}/preview 最终的 YAML 正文。 此新 API 采用与排队运行相同的参数,但不再需要“队列生成”权限。

Azure Artifacts

为通用包配置上游源

现在,可以将 Azure Artifacts 源配置为按需自动从上游源下载通用包。

以前,可以在 NuGet、Python、Maven 和 npm 包的源上配置上游源,但不能为通用包配置源。 这是因为通用包使用的存储技术存在差异,后者支持比其他受支持的包类型更大的包。

现在可以像配置其他包类型的相同方式为通用包配置上游源;打开源设置,单击上游源 ->添加上游源 -> 并选择适合你的源类型。 在下一个视图中,你将看到通用包(UPack)作为新选项(请参阅下图)。 有关详细信息,请参阅上游源配置文档

upack

请注意,上游源中的通用包仅在同一 DevOps 组织中的源之间受支持。

更新包版本 REST API 现可用于 Maven 包

现在可以使用 Azure 项目“更新包版本”REST API 来更新 Maven 包版本。 以前,可以使用 REST API 更新 NuGet、Maven、npm 和通用包的包版本,但不能更新 Maven 包。

若要更新 Maven 包,请使用 HTTP PATCH 命令,如下所示。

PATCH https://pkgs.dev.azure.com/{organization}/{project?}/\_apis/packaging/feeds/{feedId}/maven/groups/{groupId}/artifacts/{artifactId}/versions/{packageVersion}?api-version=5.1-preview.1

可以设置以下内容:

URI 参数

Name 位于 必需 类型 描述
artifactId path TRUE string 包的项目 ID
feed path TRUE string 源的名称或 ID
groupId path TRUE string 包的组 ID
organization path TRUE string Azure DevOps 组织的名称
版本 path TRUE string 包的版本
project path string 项目 ID 或项目名称
api-version 查询 TRUE string 要使用的 API 版本。 这应设置为“5.1-preview.1”才能使用此版本的 API

请求正文

Name 类型 描述
浏览 JsonPatchOperation 将向其添加包版本的视图

有关详细信息,请参阅 REST API 文档 ,因为它已更新。

后续步骤

注意

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

前往 Azure DevOps 并了解一下。

如何提供反馈

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

Make a suggestion

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

此致

亚伦·霍尔伯格