name: "Documentation Validation" on: pull_request: types: [opened, synchronize, reopened, ready_for_review] paths: - 'docs/**' - 'nodejs/src/**' - 'python/copilot/**' - 'go/**/*.go' - 'dotnet/src/**' - 'java/src/**' - 'java/pom.xml' - 'scripts/docs-validation/**' - '.github/workflows/docs-validation.yml' workflow_dispatch: merge_group: permissions: contents: read jobs: validate-typescript: name: "Validate TypeScript" if: github.event.repository.fork == false runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: 22 cache: "npm" cache-dependency-path: "nodejs/package-lock.json" - name: Install SDK dependencies working-directory: nodejs run: npm ci --ignore-scripts - name: Install validation dependencies working-directory: scripts/docs-validation run: npm ci - name: Extract and validate TypeScript working-directory: scripts/docs-validation run: npm run extract && npm run validate:ts validate-python: name: "Validate Python" if: github.event.repository.fork == false runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: 22 - uses: actions/setup-python@v6 with: python-version: "3.12" - name: Install uv uses: astral-sh/setup-uv@v7 - name: Install SDK dependencies working-directory: python run: uv sync - name: Install mypy run: pip install mypy - name: Install validation dependencies working-directory: scripts/docs-validation run: npm ci - name: Extract and validate Python working-directory: scripts/docs-validation run: npm run extract && npm run validate:py validate-go: name: "Validate Go" if: github.event.repository.fork == false runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: 22 - uses: actions/setup-go@v6 with: go-version: "1.24" cache-dependency-path: "go/go.sum" - name: Install validation dependencies working-directory: scripts/docs-validation run: npm ci - name: Extract and validate Go working-directory: scripts/docs-validation run: npm run extract && npm run validate:go validate-csharp: name: "Validate C#" if: github.event.repository.fork == false runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: 22 - uses: actions/setup-dotnet@v5 with: dotnet-version: "10.0.x" - name: Install validation dependencies working-directory: scripts/docs-validation run: npm ci - name: Restore SDK dependencies working-directory: dotnet run: dotnet restore - name: Extract and validate C# working-directory: scripts/docs-validation run: npm run extract && npm run validate:cs validate-java: name: "Validate Java" if: github.event.repository.fork == false runs-on: ubuntu-latest steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: 22 - uses: actions/setup-java@v4 with: distribution: 'microsoft' java-version: '25' cache: 'maven' - name: Install SDK to local repo working-directory: java run: mvn install -DskipTests -q - name: Install validation dependencies working-directory: scripts/docs-validation run: npm ci - name: Extract and validate Java working-directory: scripts/docs-validation run: npm run extract && npm run validate:java