Tom*_*han 15 static-analysis azure-devops
对YAML定义的Azure DevOps管道进行更改时,将更改推送到分支只是为了看到生成失败并出现解析错误(有效的YAML,但管道定义无效),然后尝试反复尝试,可能会很繁琐。解决问题。
如果可以通过本地分析和验证管道定义来缩短反馈回路,那将是一个很好的选择。从根本上讲,这是一个具有关于Azure管道中可以定义的各种资源等知识的短毛绒玩具。但是,我还没有找到能做到这一点的工具。
那里有这样的工具吗?
Sys*_*nin 12
使用 YAML 描述的管道,如果您有一个包含如何组成 YAML 文件的规则的架构,则可以验证 YAML。它将作为您描述的情况的简短反馈,特别是对于语法解析错误。YAML 架构验证可能适用于几乎所有 IDE。所以,我们需要:
该架构可能可以从很多地方找到,对于这种情况,我建议使用https://www.schemastore.org/json/ 它具有Azure Pipelines 架构(该架构包含一些问题,例如与 Microsoft 相比的不同类型的值)文档,但仍然涵盖无效语法的情况)
VS Code 需要额外的插件来执行 YAML 文本验证,还有很多可以验证架构的插件。我建议尝试RedHat 的 YAML(我知道,该插件的评级不是最好的,但它适用于验证并且也是可配置的)
在该 VS Code 插件的设置中,您将看到有关验证的部分(如屏幕截图所示)
现在,您可以添加到所需架构的设置,甚至无需将其下载到您的计算机上:
"yaml.schemas": {
"https://raw.githubusercontent.com/microsoft/azure-pipelines-vscode/v1.174.2/service-schema.json" : "/*"
}
Run Code Online (Sandbox Code Playgroud)
只需保存设置并重新启动 VS Code。您将注意到有关 YAML Azure DevOps Pipeline 文件中问题的警告(如果有)。下面的屏幕截图中的目的验证失败:
还可以在此处查看更多详细信息和示例
您可以使用其YAML测试功能在本地运行Azure DevOps代理。
使用Visual Studio Team Services代理在本地计算机上安装代理,并使用该代理中可用的代理本地YAML测试功能。
这应该使您非常接近所期望的反馈类型。
希望这可以帮助。
Azure DevOps 提供了一个运行预览 api 端点,它采用 yaml 覆盖并返回扩展的 yaml。我将此支持添加到AzurePipelinePS powershell 模块。下面的命令将执行 id 为 01 的管道,但使用我的 yaml 覆盖并返回扩展的 yaml 管道。
预览 - 预览服务:管道 API 版本:6.1-preview.1 将管道的试运行排队并返回包含最终 yaml 的对象。
# AzurePipelinesPS session
$session = 'myAPSessionName'
# Path to my local yaml
$path = ".\extension.yml"
# The id of an existing pipeline in my project
$id = 01
# The master branch of my repository
$resources = @{
repositories = @{
self = @{
refName = 'refs/heads/master'
}
}
}
Test-APPipelineYaml -Session $session -FullName $path -PipelineId $id -Resources
$resources
Run Code Online (Sandbox Code Playgroud)
我可以告诉你我们如何处理这种脱节。
我们仅使用管道即代码 yaml。
我们使用零 yaml 模板并严格执行 one-file-pr-pipeline。
我们使用 vscode 的 azure yaml 扩展,在编辑器中获得类似 linter 的行为。
我们在管道中执行的大多数实际操作都是通过调用 PowerShell 来完成的,通过合理的默认设置也可以在 CLI 中调用,这意味着我们本质上可以在本地执行任何相关操作。
代理的配置和实际的仅管道内容除外,例如下载工件任务和发布任务等。
让我举一些例子:
我们在 CLI 中运行该步骤:
我不会发布实际管道运行的屏幕截图,因为清理它需要很长时间,但它基本上是相同的,加上 run.ps1 调用包装器提供的一些更多跟踪信息。
| 归档时间: |
|
| 查看次数: |
3164 次 |
| 最近记录: |