Skip to content

Don't block PRs on linkcheck#2035

Open
konstin wants to merge 2 commits intopypa:mainfrom
konstin:konsti/linkcheck-on-main
Open

Don't block PRs on linkcheck#2035
konstin wants to merge 2 commits intopypa:mainfrom
konstin:konsti/linkcheck-on-main

Conversation

@konstin
Copy link
Copy Markdown
Contributor

@konstin konstin commented Apr 20, 2026

Fixes #1998

Currently, linkcheck is blocking PRs if any link in the project isn't accessible. Due to the high number of links, this regularly blocks unrelated PRs (see #2018 for a recent example).

This PR moves linkcheck to a separate, non-blocking check. It will still run on PRs and report a failure if a newly added link 404s (#1998 (comment)), but an unrelated failure won't block PRs anymore. We also run the check on a daily cron, so that links going away is surfaced separately from PRs.


📚 Documentation preview 📚: https://python-packaging-user-guide--2035.org.readthedocs.build/en/2035/

Fixes pypa#1998

Currently, linkcheck is blocking PRs if any link in the project isn't accessible. Due to the high number of links, this regularly blocks unrelated PRs (see pypa#2018 for a recent example).

This PR moves linkcheck to a separate, non-blocking check. It will still run on PRs and report a failure if a newly added link 404s (pypa#1998 (comment)), but an unrelated failure won't block PRs anymore. We also run the check on a daily cron, so that links going away is surfaced separately from PRs.
@konstin konstin force-pushed the konsti/linkcheck-on-main branch from 5692294 to 3bfdecb Compare April 20, 2026 19:41
Comment on lines +48 to +49
# Authenticate github.com requests during linkcheck to avoid rate limits.
GITHUB_TOKEN: ${{ github.token }}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there's an equivalent env: in test.yml that can be removed now 🙂

@webknjaz
Copy link
Copy Markdown
Member

I'd rather block PRs on newly added broken links. How can we detect this? Maybe store the Sphinx builder's structured output as an artifact and exclude those links that existed prior to PRs?

@konstin
Copy link
Copy Markdown
Contributor Author

konstin commented Apr 21, 2026

I'm not aware of any tool or function that would support only blocking on new URLs, but we can add it separately. This PR is about not blocking working PRs on a broken linkcheck, including things such as getting changes from accepted PEPs linkcheck.

@woodruffw
Copy link
Copy Markdown
Member

My 0.02c is that we can rely on maintainer discretion here -- maintainers should still review the linkcheck job when it fails (especially when a PR has new links being added), but can override it when it fails for transient reasons (like these recent kinds of cert issues).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Linkchecker blocks merging when certificate on external site is expired

3 participants