使用路径排除规则在验证运行时将中性状态发布到 GitHub
在此更新中,我们包含了对 Azure Pipelines 的多个更新。 在 YAML 管道上,我们将拒绝访问所有管道设置为受保护资源的默认值。 此外,当 Azure Pipelines 因路径排除规则而决定不运行验证生成时,会将非特定状态发布回 GitHub。
有关详细信息,请查看以下功能说明。
注意
2021 年 9 月 28 日,Axosoft 通知 Azure DevOps 其常用 git GUI 客户端 GitKraken 的依赖项有漏洞。 查看 博客文章 以了解更多详细信息。
Azure Pipelines
- 跳过生成时,将非特定状态发布到 GitHub
- 默认情况下,在受保护资源中关闭对所有管道的访问
- 使用修饰器在指定目标任务之前或之后注入任务
- 宣布弃用 Windows 2016 托管映像的计划
- 宣布弃用 macOS 10.14 托管映像
Azure Pipelines
跳过生成时,将非特定状态发布到 GitHub
使用 Azure Pipelines,始终可以在 GitHub 中验证拉取请求。 还可以指定 GitHub 存储库中的哪些 路径 应触发管道。 例如,将更改推送到 code
分支中 main
时会触发以下管道,但在将更改推送到 docs
文件夹时不会触发。
trigger: none
pr:
branches:
include:
- main
paths:
include:
- code
exclude:
- docs
pool:
vmImage: ubuntu-latest
steps:
- script: echo Hello, world!
displayName: 'Run a one-line script'
管道完成后,Azure Pipelines 会将状态发布回 GitHub。 如果 GitHub 存储库具有有效的分支保护策略,则 Azure Pipelines 发布的状态将确定是否合并拉取请求。
在上面的示例中,如果对 docs
进行了更改,GitHub 当前会阻止拉取请求等待 Azure Pipelines 返回状态。 但是,Azure Pipelines 不会运行验证生成,因为该路径已从触发器中排除,因此无法完成拉取请求。 为单个 GitHub 存储库设置路径排除触发器或多个管道的客户通常面临此挑战。
今后,Azure Pipelines 会因为路径排除规则而决定不运行验证生成时,将状态发布 neutral
回 GitHub。 这将为 GitHub 提供一个明确的方向,指示 Azure Pipelines 已完成其处理。
对话视图:
检查详细信息:
默认情况下,在受保护资源中关闭对所有管道的访问
YAML 管道可以依赖于一个或多个 受保护的资源。 服务连接、代理池、变量组、安全文件和存储库都是受保护资源的示例,因为此类资源的管理员可以控制哪些管道有权访问该资源。 管理员使用资源的安全设置面板启用或禁用管道。
创建其中一个资源时,默认体验会授予对所有管道的访问权限,除非显式将其关闭。 展望未来,为了改善整体安全状况,默认设置为拒绝访问所有管道。 若要授予对所有管道的访问权限,只需在创建体验中或在创建资源后打开切换。
使用修饰器在指定目标任务之前或之后注入任务
修饰器 是自动将任务注入管道的一种方法。 组织中的中心团队通常使用它们来自动运行所需的合规性过程。 修饰器可与经典版本、经典版本或 YAML 管道一起使用。
目前,可以在每个作业的开头、每个作业结束时或检查任务之后通过修饰器注入任务。 若要对此进行控制,请在修饰器扩展的“贡献”部分中指定 target
,如此处所述。 我们现在正在扩展目标列表,以包括以下内容:
ms.azure-pipelines-agent-job.pre-task-tasks
ms.azure-pipelines-agent-job.post-task-tasks
ms.azure-release-pipelines-agent-job.pre-task-tasks
ms.azure-release-pipelines-agent-job.post-task-tasks
下面是一个修饰器的示例,该修饰器在任务的每个实例之前注入一个 PublishPipelineArtifacts
任务到管道中。
{
"manifestVersion": 1,
"contributions": [
{
"id": "my-required-task",
"type": "ms.azure-pipelines.pipeline-decorator",
"targets": [
"ms.azure-pipelines-agent-job.pre-task-tasks"
],
"properties": {
"template": "my-decorator.yml",
"targettask": "ECDC45F6-832D-4AD9-B52B-EE49E94659BE"
}
}
],
"files": [
{
"path": "my-decorator.yml",
"addressable": true,
"contentType": "text/plain"
}
]
}
宣布弃用 Windows 2016 托管映像的计划
最近,我们已将 Windows 2022 作为托管映像提供。 随着即将于 2022 年 1 月结束对 Windows 2016 的主流支持,我们将从 11 月 15 日起弃用 vs2017-win2016
映像。 此映像计划于 2022 年 3 月完全停用。 由于这是一个常用的映像,我们希望为你提供足够的通知和时间来对管道进行必要的更改。
请参阅我们的 博客文章 ,详细了解如何使用 Windows 2016 托管映像查找所有项目和管道,以及迁移到较新版本可以采取的步骤。
宣布弃用 macOS 10.14 托管映像
最近,我们已将 macOS-11 作为托管映像提供。 因此,我们将在 2021 年 12 月弃用 macOS-10.14 映像。 依赖于此映像的生成在弃用后会失败。 可以从我们的 博客文章中找到有关弃用各种图像的更多详细信息。
后续步骤
注意
这些功能将在未来两到三周内推出。
前往 Azure DevOps 并了解一下。
如何提供反馈
我们很想听听你对这些功能的看法。 使用帮助菜单报告问题或提供建议。
你还可以在 Stack Overflow 上获取社区的建议和问题解答。
此致
Vijay Machiraju