name: "Documentation Validation" on: pull_request: types: [opened, synchronize, reopened, ready_for_review] paths: - 'docs/**' - 'nodejs/src/**' - 'python/copilot/**' - 'go/**/*.go' - 'dotnet/src/**' - 'java/sdk/src/**' - 'java/pom.xml' - 'java/sdk/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@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 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@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: 22 - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: python-version: "3.12" - name: Install uv uses: astral-sh/setup-uv@37802adc94f370d6bfd71619e3f0bf239e1f3b78 # v7.6.0 - 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@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: 22 - uses: actions/setup-go@924ae3a1cded613372ab5595356fb5720e22ba16 # v6.5.0 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@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: 22 - uses: actions/setup-dotnet@26b0ec14cb23fa6904739307f278c14f94c95bf1 # v5.4.0 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@d23441a48e516b6c34aea4fa41551a30e30af803 # v6.1.0 - uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: 22 - uses: actions/setup-java@cf277c60eb25467037889841efdb72551f06f6c3 # v4.9.1 with: distribution: 'microsoft' java-version: '25' cache: 'maven' - name: Install SDK to local repo working-directory: java run: mvn install -Dmaven.test.skip=true -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