Azure Pipelines 验证助手
快速验证 VS Code 的 Azure DevOps 流水线变更。
脚本使用参数校验、shell:false、临时文件清理和取消构建的dry-run,降低了命令注入与路径风险;但会认证Azure DevOps并可排队、取消、发布或触发发布构建,默认发布参数为true,且缺少明确的逐次用户确认、权限范围、敏感令牌处理说明和完整回滚策略,因此扣12分。
文档覆盖queue、status、cancel、轮询和故障排查,脚本也提供输入校验与部分错误信息;但状态查询等关键异常会被静默转换为空结果,文档中的参数约束与示例存在不一致(如CI Build/Product Build),未提供针对该脚本的测试或静态可复现证据,按静态上限扣分。
目标场景和主要命令较清楚,支持分支、参数、状态、日志和制品操作;但未明确非适用范围、触发边界、输出契约或中文使用说明,并依赖Azure CLI、Azure DevOps认证及可能受中国大陆网络影响的服务,因此扣8分。
SKILL.md结构清晰,包含前置条件、命令选项、常见工作流、参数表和故障排查;仓库上下文提供MIT许可证及Microsoft归属,但技能本身没有版本、变更记录、维护责任或更新路径,也有参数文档与示例不一致,扣8分。
该技能覆盖排队构建、查看状态、下载日志和制品、取消构建等核心任务,命令可直接复制使用;但默认副作用较强,实际结果依赖外部Azure状态,缺少已验证输出、成功标准和替代方案证据,按静态上限评为中等并扣8分。
源文件提供了可审计的命令、常量、校验逻辑和Azure API调用,具备有限的静态追踪性;但没有覆盖该技能关键路径的提交测试、真实CI执行记录或跨来源复核,静态评估不超过5分。
- 排队命令的默认参数可能启用发布;执行前应核对VSCODE_PUBLISH、VSCODE_RELEASE及所有构建参数。
- 文档参数表与示例存在不一致,尤其是VSCODE_BUILD_TYPE,不能仅凭示例判断有效值。
- 状态查询失败可能表现为无构建或空结果;Azure CLI、认证和Azure DevOps网络可用性是硬依赖。
它能做什么 & 适用场景
该技能面向修改 VS Code Azure DevOps 流水线 YAML 的开发者。它使用仓库内的 Node.js 脚本队列构建、查询状态、监控完成情况、查看日志和下载构建产物,也可以取消不再需要的构建。目标是减少推送代码后等待完整 CI 反馈的时间。它针对 Monaco 项目的流水线定义 111,不是通用的 Azure Pipelines 配置生成器。
检查 Azure CLI 和 Azure DevOps 扩展是否可用,并指导用户登录 Azure DevOps 及设置默认组织和项目。运行 .github/skills/azure-pipelines/azure-pipeline.ts 来队列当前或指定分支的构建,可传递重复的 KEY=value 参数或执行 dry run。查询最近构建或指定构建的状态,支持按分支、触发原因和定义筛选,持续轮询直到完成,并可将指定日志或构建产物下载到 /tmp。按构建 ID 取消运行中的构建。
- 修改 `build/azure-pipelines/` 下的 YAML 后,开发者希望在提交前队列一次验证构建。
- 流水线迭代过程中,开发者需要取消同一分支上已经过时的构建,再提交新的验证构建。
- 构建正在运行时,开发者需要每 30 秒或自定义间隔监控其完成状态。
- 构建失败或需要调查时,开发者需要查看构建概览、下载指定日志或下载构建产物。
- 只需快速验证时,开发者希望关闭 Web 构建、发布或特定平台构建,以减少验证范围。
优缺点一览
- 覆盖队列构建、状态监控、日志和产物下载、取消构建等完整验证循环。
- 支持按分支、定义、触发原因和构建 ID筛选,并可输出原始 JSON。
- 可通过多个构建参数缩小平台或发布范围,适合快速迭代。
- 提供 dry run 和可调整轮询间隔,有助于减少不必要的操作和 API 请求。
- 范围仅针对 VS Code 的 Monaco 项目和默认流水线定义 111,不是通用 Azure Pipelines 技能。
- 依赖 Node.js、Azure CLI、Azure DevOps 扩展、Git、网络连接以及相应 Azure DevOps 访问权限。
- 源材料没有提供独立安装方式、自动化测试套件或对其他 Azure DevOps 项目的验证证据。
- 实际构建仍可能耗时;技能只提供队列和监控流程,并不保证构建成功。
如何安装
该技能随 microsoft/vscode 仓库中的 61 个技能一起提供,路径为 .github/skills/azure-pipelines/SKILL.md。源材料没有说明独立安装器或单独发布包;使用时应在该仓库中保留此技能目录及其 azure-pipeline.ts 文件。运行前确认已安装 Node.js、Azure CLI 和 Azure DevOps CLI 扩展,并按技能说明执行 az login 及 az devops configure --defaults organization=https://dev.azure.com/monacotools project=Monaco。
如何使用
在仓库根目录运行:node .github/skills/azure-pipelines/azure-pipeline.ts queue。可用 queue --branch my-feature-branch 指定分支,使用 --parameter "VSCODE_PUBLISH=false" 等参数调整构建,或使用 --dry-run 只打印命令。先用 node .github/skills/azure-pipelines/azure-pipeline.ts status 查找构建 ID,再用 status --build-id 123456 --watch 监控,或用 cancel --build-id 123456 取消。向代理提出“测试我对 Azure Pipelines YAML 的修改,并队列构建后轮询至完成”这类请求即可触发相应工作流;源材料未规定更具体的代理触发语法。
对比同类
相较于直接推送修改并等待完整 CI 反馈,该技能提供了更快的手动队列、参数化验证、状态轮询和取消过时构建的流程。源材料没有列出其他具体竞争工具,因此不作更多比较。