You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Pipeline:PR合并至master前验证YAML文件并调用API

YAML语法验证与API提交的PR合并流程

核心逻辑

每次更新YAML文件后推送到feature/{filename.yaml}分支并发起PR到master时,自动执行以下流程:

  • 校验目标YAML文件的语法合法性,不合法则直接终止流程并阻止合并
  • 语法校验通过后,将文件内容提交到指定API端点
  • API提交成功后,允许PR合并

具体实现(以GitHub Actions为例)

在仓库根目录创建.github/workflows/yaml-validation-api.yml,配置内容如下:

name: YAML Validation & API Submission
on:
  pull_request:
    branches: [master]
    paths: ['**.yaml'] # 仅监听YAML文件相关的PR

jobs:
  validate-and-submit:
    runs-on: ubuntu-latest
    steps:
      - name: 拉取代码
        uses: actions/checkout@v4
        with:
          fetch-depth: 0 # 拉取完整历史以对比分支差异

      - name: 获取PR中修改的YAML文件
        id: get-target-file
        run: |
          # 提取PR中唯一修改的YAML文件(假设单PR仅改一个文件)
          TARGET_FILE=$(git diff --name-only origin/master HEAD | grep '\.yaml$')
          echo "file=$TARGET_FILE" >> $GITHUB_OUTPUT

      - name: 验证YAML语法合法性
        run: |
          # 方式1:用yamllint做语法+格式校验(需提前安装)
          sudo apt update && sudo apt install -y yamllint
          yamllint ${{ steps.get-target-file.outputs.file }}

          # 方式2:用Python yaml模块仅做语法校验(更轻量)
          # python3 -c "import yaml; yaml.safe_load(open('${{ steps.get-target-file.outputs.file }}'))"

      - name: 将YAML内容提交到API
        run: |
          # 读取文件内容并发送请求
          YAML_CONTENT=$(cat ${{ steps.get-target-file.outputs.file }})
          curl -X POST \
            -H "Content-Type: application/yaml" \
            -d "$YAML_CONTENT" \
            https://your-api-endpoint.com/submit # 替换为实际API地址
          # 若API需要认证,添加Header:-H "Authorization: Bearer ${{ secrets.API_TOKEN }}"

      - name: 标记流程完成
        run: echo "YAML校验通过,API提交完成,PR可合并"

关键配置说明

  • 触发规则:仅当PR针对master分支且修改了YAML文件时触发Workflow
  • 语法校验:两种方式可选,yamllint能同时检查格式规范,Python yaml模块仅做基础语法验证
  • API提交:根据实际API要求调整请求方法、Content-Type和认证方式,敏感凭证(如Token)要存在仓库Secrets中
  • 阻止合并:在仓库设置中开启"Require status checks to pass before merging",将该Workflow设为必填检查项,失败时直接阻止PR合并

注意事项

  • 若需要支持单PR修改多个YAML文件,需修改get-target-file步骤,循环处理每个修改的文件
  • 提前测试API在CI环境的连通性,避免因网络或权限问题导致流程失败
  • 确保feature/{filename.yaml}分支命名规则稳定,避免文件路径识别出错

内容的提问来源于stack exchange,提问作者user20350110

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 08:08:31