azure-pipelines-validator

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Azure Pipelines Validator

Azure Pipelines 验证工具

Comprehensive toolkit for validating, linting, testing, and securing Azure DevOps Pipeline configurations (azure-pipelines.yml, azure-pipelines.yaml files). Use this skill when working with Azure Pipelines, validating pipeline syntax, debugging configuration issues, implementing best practices, or performing security audits.
用于验证、代码检查、测试和保障Azure DevOps Pipeline配置(azure-pipelines.yml、azure-pipelines.yaml文件)安全的综合工具包。当你处理Azure Pipelines、验证管道语法、调试配置问题、实施最佳实践或执行安全审计时,可使用此工具。

When to Use This Skill

适用场景

Use the azure-pipelines-validator skill in the following scenarios:
  • ✅ Working with
    azure-pipelines.yml
    or
    azure-pipelines.yaml
    files
  • ✅ Validating Azure Pipelines YAML syntax and structure
  • ✅ Debugging pipeline configuration errors
  • ✅ Implementing Azure Pipelines best practices
  • ✅ Performing security audits on pipeline configurations
  • ✅ Checking for hardcoded secrets or credentials
  • ✅ Optimizing pipeline performance (caching, parallelization)
  • ✅ Ensuring compliance with security standards
  • ✅ Code review of Azure DevOps CI/CD configurations
  • ✅ Migrating or refactoring pipeline configurations
在以下场景中使用azure-pipelines-validator工具:
  • ✅ 处理
    azure-pipelines.yml
    azure-pipelines.yaml
    文件
  • ✅ 验证Azure Pipelines YAML语法和结构
  • ✅ 调试管道配置错误
  • ✅ 实施Azure Pipelines最佳实践
  • ✅ 对管道配置执行安全审计
  • ✅ 检查硬编码的密钥或凭证
  • ✅ 优化管道性能(缓存、并行化)
  • ✅ 确保符合安全标准
  • ✅ 代码审查Azure DevOps CI/CD配置
  • ✅ 迁移或重构管道配置

Features

功能特性

0. YAML Linting (Optional)

0. YAML代码检查(可选)

  • ✅ YAML formatting validation with yamllint
  • ✅ Indentation checking (2-space standard)
  • ✅ Line length validation
  • ✅ Trailing spaces detection
  • ✅ Custom Azure Pipelines YAML rules
  • ✅ Automatic venv management (no manual install required)
  • ✅ 使用yamllint验证YAML格式
  • ✅ 缩进检查(2空格标准)
  • ✅ 行长度验证
  • ✅ 末尾空格检测
  • ✅ 自定义Azure Pipelines YAML规则
  • ✅ 自动虚拟环境管理(无需手动安装)

1. Syntax Validation

1. 语法验证

  • ✅ YAML syntax checking
  • ✅ Azure Pipelines schema validation
  • ✅ Required fields verification
  • ✅ Stages/Jobs/Steps hierarchy validation
  • ✅ Task format validation (TaskName@version)
  • ✅ Pool/agent specification validation
  • ✅ Deployment job strategy validation
  • ✅ Trigger and PR configuration validation
  • ✅ Resource definitions validation
  • ✅ Variable and parameter declarations
  • ✅ Dependency validation (dependsOn)
  • ✅ YAML语法检查
  • ✅ Azure Pipelines schema验证
  • ✅ 必填字段验证
  • ✅ 阶段/作业/步骤层级验证
  • ✅ 任务格式验证(TaskName@version)
  • ✅ 代理池/Agent规格验证
  • ✅ 部署作业策略验证
  • ✅ 触发器和PR配置验证
  • ✅ 资源定义验证
  • ✅ 变量和参数声明验证
  • ✅ 依赖关系验证(dependsOn)

2. Best Practices Checking

2. 最佳实践检查

  • ✅ displayName usage for readability
  • ✅ Task version pinning (specific @N not @0)
  • ✅ Pool vmImage specific versions (not 'latest')
  • ✅ Cache usage for package managers
  • ✅ Timeout configuration for long-running jobs
  • ✅ Deployment job conditions
  • ✅ Artifact retention settings
  • ✅ Parallel execution opportunities
  • ✅ Template usage recommendations
  • ✅ Variable group organization
  • ✅ Deployment strategy best practices
  • ✅ 使用displayName提升可读性
  • ✅ 固定任务版本(使用特定@N而非@0)
  • ✅ 代理池vmImage使用特定版本(而非'latest')
  • ✅ 为包管理器使用缓存
  • ✅ 为长时间运行的作业配置超时
  • ✅ 部署作业条件配置
  • ✅ 制品保留设置
  • ✅ 并行执行机会识别
  • ✅ 模板使用建议
  • ✅ 变量组组织建议
  • ✅ 部署策略最佳实践

3. Security Scanning

3. 安全扫描

  • ✅ Hardcoded secrets and credentials detection
  • ✅ API keys and tokens in variables
  • ✅ Task version security
  • ✅ Container image security (:latest tags)
  • ✅ Dangerous script patterns (curl | bash, eval)
  • ✅ Service connection security
  • ✅ Secret exposure in logs
  • ✅ Checkout security settings
  • ✅ Variable security (isSecret flag)
  • ✅ Azure credential hardcoding
  • ✅ SSL/TLS verification bypasses
  • ✅ 检测硬编码的密钥和凭证
  • ✅ 检测变量中的API密钥和令牌
  • ✅ 任务版本安全检查
  • ✅ 容器镜像安全检查(:latest标签风险)
  • ✅ 危险脚本模式检测(curl | bash、eval)
  • ✅ 服务连接安全检查
  • ✅ 日志中的密钥泄露风险检查
  • ✅ 代码检出安全设置检查
  • ✅ 变量安全性检查(isSecret标记)
  • ✅ Azure凭证硬编码检测
  • ✅ SSL/TLS验证绕过检测

Usage

使用方法

Basic Validation

基础验证

To validate an Azure Pipelines configuration file:
bash
bash .claude/skills/azure-pipelines-validator/scripts/validate_azure_pipelines.sh <file-path>
Example:
bash
bash .claude/skills/azure-pipelines-validator/scripts/validate_azure_pipelines.sh azure-pipelines.yml
This runs all four validation layers: 0. YAML lint (yamllint) - optional, auto-installed in venv if needed
  1. Syntax validation
  2. Best practices check
  3. Security scan
验证Azure Pipelines配置文件:
bash
bash .claude/skills/azure-pipelines-validator/scripts/validate_azure_pipelines.sh <file-path>
示例:
bash
bash .claude/skills/azure-pipelines-validator/scripts/validate_azure_pipelines.sh azure-pipelines.yml
此命令运行全部四个验证层级: 0. YAML代码检查(yamllint)- 可选,若需要会自动在虚拟环境中安装
  1. 语法验证
  2. 最佳实践检查
  3. 安全扫描

Validation Options

验证选项

bash
undefined
bash
undefined

Run only syntax validation

仅运行语法验证

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --syntax-only
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --syntax-only

Run only best practices check

仅运行最佳实践检查

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --best-practices
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --best-practices

Run only security scan

仅运行安全扫描

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --security-only
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --security-only

Skip YAML linting (yamllint)

跳过YAML代码检查(yamllint)

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --skip-yaml-lint
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --skip-yaml-lint

Skip best practices check

跳过最佳实践检查

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --no-best-practices
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --no-best-practices

Skip security scan

跳过安全扫描

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --no-security
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --no-security

Strict mode (fail on warnings)

严格模式(警告视为失败)

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --strict
undefined
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --strict
undefined

Individual Validators

独立验证脚本

You can also run individual validation scripts:
bash
undefined
你也可以运行单独的验证脚本:
bash
undefined

Syntax validation

语法验证

python3 scripts/validate_syntax.py azure-pipelines.yml
python3 scripts/validate_syntax.py azure-pipelines.yml

Best practices check

最佳实践检查

python3 scripts/check_best_practices.py azure-pipelines.yml
python3 scripts/check_best_practices.py azure-pipelines.yml

Security scan

安全扫描

python3 scripts/check_security.py azure-pipelines.yml
undefined
python3 scripts/check_security.py azure-pipelines.yml
undefined

Output Example

输出示例

════════════════════════════════════════════════════════════════════════════════
  Azure Pipelines Validator
════════════════════════════════════════════════════════════════════════════════

File: azure-pipelines.yml

[1/3] Running syntax validation...

✓ Syntax validation passed

[2/3] Running best practices check...

SUGGESTIONS (2):
──────────────────────────────────────────────────────────────────────────────
  INFO: Line 15: Job 'BuildJob' should have displayName for better readability [missing-displayname]
  💡 Suggestion: Add 'displayName: "Your Job Description"' to job 'BuildJob'

  WARNING: Line 25: Task 'Npm@1' in job 'BuildJob' could benefit from caching [missing-cache]
  💡 Suggestion: Add Cache@2 task to cache dependencies and speed up builds

ℹ  Best practices check completed with suggestions

[3/3] Running security scan...

MEDIUM SEVERITY (1):
──────────────────────────────────────────────────────────────────────────────
  MEDIUM: Line 8: Container 'linux' uses ':latest' tag [container-latest-tag]
  🔒 Remediation: Pin container images to specific versions or SHA digests

✓ Security scan passed

════════════════════════════════════════════════════════════════════════════════
  Validation Summary
════════════════════════════════════════════════════════════════════════════════

Syntax Validation:      PASSED
Best Practices:         WARNINGS
Security Scan:          PASSED

════════════════════════════════════════════════════════════════════════════════

✓ All validation checks passed
════════════════════════════════════════════════════════════════════════════════
  Azure Pipelines Validator
════════════════════════════════════════════════════════════════════════════════

File: azure-pipelines.yml

[1/3] Running syntax validation...

✓ Syntax validation passed

[2/3] Running best practices check...

SUGGESTIONS (2):
──────────────────────────────────────────────────────────────────────────────
  INFO: Line 15: Job 'BuildJob' should have displayName for better readability [missing-displayname]
  💡 Suggestion: Add 'displayName: "Your Job Description"' to job 'BuildJob'

  WARNING: Line 25: Task 'Npm@1' in job 'BuildJob' could benefit from caching [missing-cache]
  💡 Suggestion: Add Cache@2 task to cache dependencies and speed up builds

ℹ  Best practices check completed with suggestions

[3/3] Running security scan...

MEDIUM SEVERITY (1):
──────────────────────────────────────────────────────────────────────────────
  MEDIUM: Line 8: Container 'linux' uses ':latest' tag [container-latest-tag]
  🔒 Remediation: Pin container images to specific versions or SHA digests

✓ Security scan passed

════════════════════════════════════════════════════════════════════════════════
  Validation Summary
════════════════════════════════════════════════════════════════════════════════

Syntax Validation:      PASSED
Best Practices:         WARNINGS
Security Scan:          PASSED

════════════════════════════════════════════════════════════════════════════════

✓ All validation checks passed

Common Validation Scenarios

常见验证场景

Scenario 1: Validating a New Pipeline

场景1:验证新管道

bash
undefined
bash
undefined

Validate syntax and structure

验证语法和结构

bash scripts/validate_azure_pipelines.sh new-pipeline.yml
undefined
bash scripts/validate_azure_pipelines.sh new-pipeline.yml
undefined

Scenario 2: Security Audit Before Merge

场景2:合并前的安全审计

bash
undefined
bash
undefined

Run security scan only with strict mode

仅运行安全扫描并启用严格模式

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --security-only --strict
undefined
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --security-only --strict
undefined

Scenario 3: Pipeline Optimization

场景3:管道优化

bash
undefined
bash
undefined

Check for best practices and optimization opportunities

检查最佳实践和优化机会

bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --best-practices
undefined
bash scripts/validate_azure_pipelines.sh azure-pipelines.yml --best-practices
undefined

Scenario 4: CI/CD Integration

场景4:CI/CD集成

yaml
undefined
yaml
undefined

In your Azure Pipeline

在你的Azure Pipeline中

trigger: branches: include: - main
pool: vmImage: 'ubuntu-22.04'
steps:
  • script: | pip3 install PyYAML bash .claude/skills/azure-pipelines-validator/scripts/validate_azure_pipelines.sh azure-pipelines.yml --strict displayName: 'Validate Pipeline Configuration'
undefined
trigger: branches: include: - main
pool: vmImage: 'ubuntu-22.04'
steps:
  • script: | pip3 install PyYAML bash .claude/skills/azure-pipelines-validator/scripts/validate_azure_pipelines.sh azure-pipelines.yml --strict displayName: 'Validate Pipeline Configuration'
undefined

Integration with Claude Code

与Claude Code集成

When Claude Code invokes this skill, it will:
  1. Auto-detect Azure Pipelines files - Run the validator without arguments to auto-detect
    azure-pipelines*.yml
    files in the current directory (up to 3 levels deep)
  2. Run validation when you ask to validate, check, or review Azure Pipelines configurations
  3. Provide actionable feedback with line numbers and suggestions
  4. Stage-aware condition checking - Recognizes when parent stages have conditions, avoiding false positives on deployment jobs
  5. Deduplicated findings - Reports each security issue once, even if detected by multiple patterns
Example prompts:
  • "Validate my Azure Pipeline"
  • "Check this azure-pipelines.yml for security issues"
  • "Review my pipeline configuration for best practices"
  • "Why is my Azure Pipeline failing?"
  • "Optimize my Azure DevOps pipeline"
当Claude Code调用此工具时,将:
  1. 自动检测Azure Pipelines文件 - 无需参数即可运行验证器,自动检测当前目录(最多3层深度)中的
    azure-pipelines*.yml
    文件
  2. 运行验证 当你请求验证、检查或审查Azure Pipelines配置时
  3. 提供可操作的反馈 包含行号和改进建议
  4. 阶段感知条件检查 - 识别父阶段的条件,避免部署作业的误报
  5. 去重检测结果 - 每个安全问题仅报告一次,即使被多个模式检测到
示例提示:
  • "验证我的Azure Pipeline"
  • "检查这个azure-pipelines.yml的安全问题"
  • "审查我的管道配置是否符合最佳实践"
  • "为什么我的Azure Pipeline失败了?"
  • "优化我的Azure DevOps管道"

When to Use Context7/WebSearch for Documentation

何时使用Context7/WebSearch查找文档

The validation scripts provide static analysis. For dynamic documentation lookup, manually use these tools when you need:
  • Task version information: "What's the latest version of AzureWebApp task?"
  • Task input parameters: "What inputs does Docker@2 support?"
  • Feature documentation: "How do I configure deployment environments in Azure Pipelines?"
  • Troubleshooting: "Why does my AzureCLI@2 task fail with error X?"
How to fetch documentation:
undefined
验证脚本提供静态分析。若需要动态文档查询,当你需要以下信息时手动使用这些工具:
  • 任务版本信息:"AzureWebApp任务的最新版本是什么?"
  • 任务输入参数:"Docker@2支持哪些输入参数?"
  • 功能文档:"如何在Azure Pipelines中配置部署环境?"
  • 故障排除:"为什么我的AzureCLI@2任务报错X?"
获取文档的方法:
undefined

Use Context7 MCP for structured docs

使用Context7 MCP获取结构化文档

mcp__context7__resolve-library-id("azure-pipelines") mcp__context7__get-library-docs(context7CompatibleLibraryID, topic="deployment")
mcp__context7__resolve-library-id("azure-pipelines") mcp__context7__get-library-docs(context7CompatibleLibraryID, topic="deployment")

Or use WebSearch/WebFetch for Microsoft Learn docs

或使用WebSearch/WebFetch获取Microsoft Learn文档

WebSearch("Azure Pipelines Docker@2 task documentation 2025") WebFetch("https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/docker-v2")

**Note**: Documentation lookup is a manual action - the validator scripts focus on static analysis and do not automatically fetch external documentation.
WebSearch("Azure Pipelines Docker@2 task documentation 2025") WebFetch("https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/docker-v2")

**注意**:文档查询是手动操作 - 验证脚本专注于静态分析,不会自动获取外部文档。

Validation Rules

验证规则

Syntax Rules

语法规则

  • yaml-syntax
    : Valid YAML formatting
  • yaml-invalid-root
    : Root must be a dictionary
  • invalid-hierarchy
    : Cannot mix stages/jobs/steps at root level
  • task-invalid-format
    : Tasks must follow TaskName@version format
  • pool-invalid
    : Pool must specify name or vmImage
  • stage-missing-jobs
    : Stages must define jobs
  • job-missing-steps
    : Regular jobs must define steps
  • deployment-missing-strategy
    : Deployment jobs must define strategy
  • variable-invalid-name
    : Variables should use valid naming
  • yaml-syntax
    : 验证YAML格式
  • yaml-invalid-root
    : 根节点必须是字典
  • invalid-hierarchy
    : 根级别不能混合stages/jobs/steps
  • task-invalid-format
    : 任务必须遵循TaskName@version格式
  • pool-invalid
    : 代理池必须指定name或vmImage
  • stage-missing-jobs
    : 阶段必须定义jobs
  • job-missing-steps
    : 常规作业必须定义steps
  • deployment-missing-strategy
    : 部署作业必须定义strategy
  • variable-invalid-name
    : 变量应使用有效命名

Best Practice Rules

最佳实践规则

  • missing-displayname
    : Stages/jobs should have displayName
  • task-version-zero
    : Tasks should not use @0 version (except whitelisted tasks where @0 is the only version: GoTool, NodeTool, UsePythonVersion, KubernetesManifest, DockerCompose, HelmInstaller, HelmDeploy)
  • task-missing-version
    : Tasks must specify version
  • pool-latest-image
    : Avoid 'latest' in vmImage
  • missing-cache
    : Package installations should use caching
  • missing-timeout
    : Deployment jobs should specify timeout
  • missing-deployment-condition
    : Production deployments should have conditions
  • parallel-opportunity
    : Test jobs could use parallelization
  • template-opportunity
    : Duplicate job patterns could use templates
  • many-inline-variables
    : Consider using variable groups
  • missing-displayname
    : 阶段/作业应设置displayName
  • task-version-zero
    : 任务不应使用@0版本(除了白名单任务,这些任务只有@0版本:GoTool、NodeTool、UsePythonVersion、KubernetesManifest、DockerCompose、HelmInstaller、HelmDeploy)
  • task-missing-version
    : 任务必须指定版本
  • pool-latest-image
    : 避免在vmImage中使用'latest'
  • missing-cache
    : 包安装应使用缓存
  • missing-timeout
    : 部署作业应指定超时
  • missing-deployment-condition
    : 生产部署应设置条件
  • parallel-opportunity
    : 测试作业可使用并行化
  • template-opportunity
    : 重复的作业模式可使用模板
  • many-inline-variables
    : 考虑使用变量组

Security Rules

安全规则

  • hardcoded-password
    : Hardcoded passwords detected
  • hardcoded-api-key
    : Hardcoded API keys detected
  • hardcoded-secret
    : Hardcoded secrets/tokens detected
  • hardcoded-aws-credentials
    : AWS credentials hardcoded
  • hardcoded-azure-ids
    : Azure subscription/tenant IDs hardcoded
  • curl-pipe-shell
    : Dangerous curl | bash pattern
  • eval-command
    : Eval command usage with variables
  • chmod-777
    : Overly permissive file permissions
  • insecure-ssl
    : SSL/TLS verification disabled
  • secret-in-logs
    : Potential secret exposure in logs
  • container-latest-tag
    : Container using :latest tag
  • task-no-version
    : Task missing version (security risk)
  • hardcoded-service-connection
    : Service connection IDs hardcoded
  • checkout-no-clean
    : Checkout without clean
  • variable-not-secret
    : Sensitive variable not marked as secret
  • hardcoded-password
    : 检测到硬编码密码
  • hardcoded-api-key
    : 检测到硬编码API密钥
  • hardcoded-secret
    : 检测到硬编码密钥/令牌
  • hardcoded-aws-credentials
    : 检测到硬编码AWS凭证
  • hardcoded-azure-ids
    : 检测到硬编码Azure订阅/租户ID
  • curl-pipe-shell
    : 检测到危险的curl | bash模式
  • eval-command
    : 检测到使用变量的eval命令
  • chmod-777
    : 检测到过度宽松的文件权限
  • insecure-ssl
    : 检测到SSL/TLS验证被禁用
  • secret-in-logs
    : 检测到日志中的密钥泄露风险
  • container-latest-tag
    : 检测到容器使用:latest标签
  • task-no-version
    : 检测到任务未指定版本(安全风险)
  • hardcoded-service-connection
    : 检测到硬编码服务连接ID
  • checkout-no-clean
    : 检测到代码检出未启用clean
  • variable-not-secret
    : 检测到敏感变量未标记为secret

Requirements

环境要求

  • Python 3.7+
  • PyYAML and yamllint: Auto-installed in venv if not available systemwide
  • Bash: For running the orchestrator script
No manual installation required! The validator uses automatic venv management:
  • If PyYAML or yamllint are available system-wide, they'll be used
  • Otherwise, a persistent
    .venv
    is created and packages are auto-installed
  • The venv is reused across runs for optimal performance
To manually install dependencies system-wide (optional):
bash
pip3 install PyYAML yamllint
  • Python 3.7+
  • PyYAMLyamllint:若系统未安装,会自动在虚拟环境中安装
  • Bash:用于运行编排脚本
无需手动安装! 验证器使用自动虚拟环境管理:
  • 若系统已安装PyYAML或yamllint,将直接使用
  • 否则,会创建持久化的
    .venv
    并自动安装依赖包
  • 虚拟环境会在多次运行中复用以提升性能
若需手动在系统层面安装依赖(可选):
bash
pip3 install PyYAML yamllint

Documentation

文档

Comprehensive documentation is included in the
docs/
directory:
  • azure-pipelines-reference.md
    : Complete Azure Pipelines YAML syntax reference with examples
完整文档位于
docs/
目录:
  • azure-pipelines-reference.md
    :包含示例的完整Azure Pipelines YAML语法参考

Examples

示例

Example Azure Pipelines configurations are provided in the
examples/
directory:
  • basic-pipeline.yml
    : Simple CI pipeline with build and test stages
  • docker-build.yml
    : Docker build and push workflow
  • deployment-pipeline.yml
    : Multi-environment deployment with approval gates
  • multi-platform.yml
    : Multi-platform build matrix
  • template-example.yml
    : Pipeline using reusable templates
Test the skill with examples:
bash
bash scripts/validate_azure_pipelines.sh examples/basic-pipeline.yml
examples/
目录提供了示例Azure Pipelines配置:
  • basic-pipeline.yml
    :包含构建和测试阶段的简单CI管道
  • docker-build.yml
    :Docker构建和推送工作流
  • deployment-pipeline.yml
    :带审批门的多环境部署管道
  • multi-platform.yml
    :多平台构建矩阵
  • template-example.yml
    :使用可复用模板的管道
使用示例测试工具:
bash
bash scripts/validate_azure_pipelines.sh examples/basic-pipeline.yml

Fetching Latest Documentation

获取最新文档

When encountering specific Azure Pipelines tasks, resources, or version requirements, you can manually use the following tools to get up-to-date information:
  1. Use Context7 MCP to fetch version-aware Azure Pipelines documentation
  2. Use WebSearch to find latest Azure DevOps documentation
  3. Use WebFetch to retrieve specific documentation pages from learn.microsoft.com
Note: These tools are not automatically invoked by the validation scripts. Use them manually when you need to look up specific Azure Pipelines tasks, features, or troubleshoot validation errors.
当遇到特定的Azure Pipelines任务、资源或版本要求时,可手动使用以下工具获取最新信息:
  1. 使用Context7 MCP 获取版本感知的Azure Pipelines文档
  2. 使用WebSearch 查找最新的Azure DevOps文档
  3. 使用WebFetch 从learn.microsoft.com获取特定文档页面
注意:这些工具不会被验证脚本自动调用。当你需要查找特定Azure Pipelines任务、功能或排查验证错误时,手动使用它们。

Extending the Skill

扩展工具

Adding Custom Validation Rules

添加自定义验证规则

Add custom rules to the validation scripts:
  1. Syntax rules: Edit
    scripts/validate_syntax.py
  2. Best practice rules: Edit
    scripts/check_best_practices.py
  3. Security rules: Edit
    scripts/check_security.py
在验证脚本中添加自定义规则:
  1. 语法规则:编辑
    scripts/validate_syntax.py
  2. 最佳实践规则:编辑
    scripts/check_best_practices.py
  3. 安全规则:编辑
    scripts/check_security.py

Custom Rule Example

自定义规则示例

python
undefined
python
undefined

In check_best_practices.py

In check_best_practices.py

def _check_custom_rule(self): """Check for custom organization rule""" for job in self._get_all_jobs(): job_name = job.get('job') or job.get('deployment')
    # Your custom validation logic
    if 'tags' not in pool:
        self.issues.append(BestPracticeIssue(
            'warning',
            self._get_line(job_name),
            f"Job '{job_name}' should specify agent tags",
            'custom-missing-tags',
            "Add 'tags' to pool to select appropriate agents"
        ))
undefined
def _check_custom_rule(self): """Check for custom organization rule""" for job in self._get_all_jobs(): job_name = job.get('job') or job.get('deployment')
    # Your custom validation logic
    if 'tags' not in pool:
        self.issues.append(BestPracticeIssue(
            'warning',
            self._get_line(job_name),
            f"Job '{job_name}' should specify agent tags",
            'custom-missing-tags',
            "Add 'tags' to pool to select appropriate agents"
        ))
undefined

Troubleshooting

故障排除

Python Module Not Found

Python模块未找到

bash
undefined
bash
undefined

Install PyYAML

安装PyYAML

pip3 install PyYAML
pip3 install PyYAML

Or with homebrew Python

或使用Homebrew Python

python3 -m pip install PyYAML
undefined
python3 -m pip install PyYAML
undefined

Permission Denied

权限拒绝

bash
undefined
bash
undefined

Make scripts executable

为脚本添加执行权限

chmod +x scripts/.sh scripts/.py
undefined
chmod +x scripts/.sh scripts/.py
undefined

Validation Errors

验证错误

Check the documentation:
查阅文档:

Version History

版本历史

v1.0.0 (2025-01-24)

v1.0.0 (2025-01-24)

  • Initial release
  • Syntax validation with comprehensive Azure Pipelines schema checking
  • Best practices validation with 10+ rules
  • Security scanning with 20+ security checks
  • Comprehensive documentation and examples
  • Integration with Context7 for latest Azure DevOps docs
  • 初始版本
  • 包含全面Azure Pipelines schema检查的语法验证
  • 包含10+规则的最佳实践验证
  • 包含20+安全检查的安全扫描
  • 完整的文档和示例
  • 与Context7集成以获取最新Azure DevOps文档

Contributing

贡献

To improve this skill:
  1. Add new validation rules to appropriate scripts
  2. Update documentation with new patterns
  3. Add example configurations
  4. Test with real-world Azure Pipelines files
若要改进此工具:
  1. 为相应脚本添加新的验证规则
  2. 更新文档以包含新的模式
  3. 添加示例配置
  4. 使用真实世界的Azure Pipelines文件进行测试

License

许可证

This skill is part of the DevOps Skills collection.
此工具属于DevOps技能集合的一部分。

Support

支持

For issues, questions, or contributions:

Remember: This skill validates Azure Pipelines configurations but does not execute pipelines. Use Azure DevOps Pipeline validation or Azure CLI for testing actual pipeline execution.
若遇到问题、疑问或想要贡献:

注意:此工具仅验证Azure Pipelines配置,不执行管道。测试实际管道执行请使用Azure DevOps Pipeline验证功能或Azure CLI。