diff --git a/.github/workflows/validate-yamls.yml b/.github/workflows/validate-yamls.yml new file mode 100644 index 00000000..cde6d64b --- /dev/null +++ b/.github/workflows/validate-yamls.yml @@ -0,0 +1,65 @@ +name: Validate YAML Workflows + +on: + pull_request: + paths: + - 'yaml_instance/**/*.yaml' + - '.github/workflows/**/*.yml' + - 'tools/validate_all_yamls.py' + - 'check/**/*.py' + + push: + branches: + - main + paths: + - 'yaml_instance/**/*.yaml' + - '.github/workflows/**/*.yml' + - 'tools/validate_all_yamls.py' + - 'check/**/*.py' + + workflow_dispatch: + +jobs: + validate: + name: Validate YAML Configuration Files + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python 3.12 + uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - name: Install uv + uses: astral-sh/setup-uv@v4 + with: + enable-cache: true + + - name: Cache uv dependencies + uses: actions/cache@v4 + with: + path: | + ~/.cache/uv + .venv + key: ${{ runner.os }}-uv-${{ hashFiles('uv.lock') }} + restore-keys: | + ${{ runner.os }}-uv- + + - name: Install dependencies + run: uv sync + + - name: Run YAML validation + run: uv run python tools/validate_all_yamls.py + + - name: Report validation results + if: always() + run: | + if [ $? -eq 0 ]; then + echo "All YAML workflow files passed validation" + else + echo "YAML validation failed - check the logs above for details" + exit 1 + fi