Skip to content

ci: enforce relative internal doc links + pre-commit hint #5452

ci: enforce relative internal doc links + pre-commit hint

ci: enforce relative internal doc links + pre-commit hint #5452

Workflow file for this run

name: Build, format MDX and Lint
on:
pull_request:
branches:
- main
workflow_dispatch:
jobs:
complete:
if: always()
needs: [ mdx-format, build ]
runs-on: ubuntu-latest
steps:
- if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: exit 1
mdx-format:
runs-on: ubuntu-latest
steps:
- name: Checkout App Repo
uses: actions/checkout@v4
- name: Install pnpm
uses: pnpm/action-setup@v6
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '24'
cache: 'pnpm'
cache-dependency-path: '**/pnpm-lock.yaml'
- name: Enable Corepack
run: corepack enable
- name: Install App Dependencies
run: pnpm install --prefer-offline --frozen-lockfile
- name: Check MDX
run: git update-index -g && pnpm ci:mdx
- name: Show Diff if Prettier Fails
if: ${{ failure() }}
run: pnpm diff:mdx && echo "::error::Prettier static analysis failed"
- name: No absolute internal /docs links
run: |
# Internal doc links must be relative (../path/file.mdx), not absolute
# /docs/... routes. Relative links are validated at build time by
# onBrokenMarkdownLinks; absolute route links are not.
# CONTRIBUTING.md is excluded: it is not part of the docs build and
# its /docs link is an intentional illustrative example.
if grep -rn --include='*.md' --include='*.mdx' --exclude='CONTRIBUTING.md' '](/docs' docs/; then
echo "::error::Found absolute /docs link(s) above. Use a relative ../path/file.mdx link with the .mdx extension instead — see docs/platforms/anchor-platform/CONTRIBUTING.md."
exit 1
fi
build:
uses: ./.github/workflows/build.yml