From 89d00542067c8462576fa20297e4a3ad88ac0899 Mon Sep 17 00:00:00 2001 From: Samuel Tardieu Date: Mon, 3 Aug 2026 18:55:03 +0200 Subject: [PATCH] Check that the doc contains no broken links A broken link will make the Clippy subtree sync fail in the compiler repo. --- .github/workflows/clippy_mq.yml | 54 ++++++++++++++++++++++++++++++++- .github/workflows/clippy_pr.yml | 54 ++++++++++++++++++++++++++++++++- 2 files changed, 106 insertions(+), 2 deletions(-) diff --git a/.github/workflows/clippy_mq.yml b/.github/workflows/clippy_mq.yml index 43cab49d8ece..dd7b6a872c4a 100644 --- a/.github/workflows/clippy_mq.yml +++ b/.github/workflows/clippy_mq.yml @@ -195,8 +195,60 @@ jobs: env: INTEGRATION: ${{ matrix.integration }} + doc: + # NOTE: If you modify this job, make sure you copy the changes to clippy_pr.yml + runs-on: ubuntu-latest + + env: + RUSTDOCFLAGS: "-D rustdoc::broken-intra-doc-links" + + steps: + # Setup + - name: Checkout + uses: actions/checkout@v7 + with: + # Unsetting this would make so that any malicious package could get our Github Token + persist-credentials: false + + - name: Install toolchain + run: | + # Use a way compatible with Rustup pre-1.28.0 and Rustup 1.28.0 + rustup show active-toolchain || rustup toolchain install + + # Run + - name: Rustdoc top-level + run: cargo doc --no-deps + + - name: Rustdoc clippy_config + run: cargo doc --no-deps + working-directory: clippy_config + + - name: Rustdoc clippy_dev + run: cargo doc --no-deps + working-directory: clippy_dev + + - name: Rustdoc clippy_lints + run: cargo doc --no-deps + working-directory: clippy_lints + + - name: Rustdoc clippy_lints_internal + run: cargo doc --no-deps + working-directory: clippy_lints_internal + + - name: Rustdoc clippy_utils + run: cargo doc --no-deps + working-directory: clippy_utils + + - name: Rustdoc declare_clippy_lint + run: cargo doc --no-deps + working-directory: declare_clippy_lint + + - name: Rustdoc lintcheck + run: cargo doc --no-deps + working-directory: lintcheck + conclusion: - needs: [ base, metadata_collection, integration_build, integration ] + needs: [ base, metadata_collection, integration_build, integration, doc ] # We need to ensure this job does *not* get skipped if its dependencies fail, # because a skipped job is considered a success by GitHub. So we have to # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run diff --git a/.github/workflows/clippy_pr.yml b/.github/workflows/clippy_pr.yml index 5658e041e03c..2b4e1d6c97c6 100644 --- a/.github/workflows/clippy_pr.yml +++ b/.github/workflows/clippy_pr.yml @@ -62,10 +62,62 @@ jobs: env: OS: ${{ runner.os }} + doc: + # NOTE: If you modify this job, make sure you copy the changes to clippy_mq.yml + runs-on: ubuntu-latest + + env: + RUSTDOCFLAGS: "-D rustdoc::broken-intra-doc-links" + + steps: + # Setup + - name: Checkout + uses: actions/checkout@v7 + with: + # Unsetting this would make so that any malicious package could get our Github Token + persist-credentials: false + + - name: Install toolchain + run: | + # Use a way compatible with Rustup pre-1.28.0 and Rustup 1.28.0 + rustup show active-toolchain || rustup toolchain install + + # Run + - name: Rustdoc top-level + run: cargo doc --no-deps + + - name: Rustdoc clippy_config + run: cargo doc --no-deps + working-directory: clippy_config + + - name: Rustdoc clippy_dev + run: cargo doc --no-deps + working-directory: clippy_dev + + - name: Rustdoc clippy_lints + run: cargo doc --no-deps + working-directory: clippy_lints + + - name: Rustdoc clippy_lints_internal + run: cargo doc --no-deps + working-directory: clippy_lints_internal + + - name: Rustdoc clippy_utils + run: cargo doc --no-deps + working-directory: clippy_utils + + - name: Rustdoc declare_clippy_lint + run: cargo doc --no-deps + working-directory: declare_clippy_lint + + - name: Rustdoc lintcheck + run: cargo doc --no-deps + working-directory: lintcheck + # We need to have the "conclusion" job also on PR CI, to make it possible # to add PRs to a merge queue. conclusion: - needs: [ base ] + needs: [ base, doc ] # We need to ensure this job does *not* get skipped if its dependencies fail, # because a skipped job is considered a success by GitHub. So we have to # overwrite `if:`. We use `!cancelled()` to ensure the job does still not get run