-
-
Notifications
You must be signed in to change notification settings - Fork 636
Description
Summary
The markdown link checker CI workflow passes in ~5 seconds despite master having 21+ broken GitHub URLs that return HTTP 404.
Evidence
Broken URLs on master (all return 404)
https://github.com/shakacode/react_on_rails/blob/master/lib/generators/react_on_rails/install_generator.rb
https://github.com/shakacode/react_on_rails/blob/master/spec/dummy/config/shakapacker.yml
https://github.com/shakacode/react_on_rails/tree/master/spec/dummy
https://github.com/shakacode/react_on_rails/tree/master/lib/react_on_rails/controller.rb
... (21+ total)
These should be prefixed with react_on_rails/ after the monorepo restructure in PR #2114.
Local vs CI behavior
| Environment | Time | Result |
|---|---|---|
| Local (npx markdown-link-check) | ~4 minutes | ❌ Finds 404 errors correctly |
| CI (GitHub Actions) | ~5 seconds | ✅ "All links are good!" |
Timeline
- Nov 4: wretry.action wrapper added (PR Add retry logic for transient HTTP errors in markdown link checker #1899)
- Nov 16: CI failed and caught broken relative link
../CHANGELOG.md(took 96-99 seconds) - Nov 24: Monorepo restructure merged (PR Restructure monorepo with two top-level product directories #2114), breaking many GitHub URLs
- Nov 24+: All CI runs pass in ~5 seconds despite broken external URLs
CI Run Comparison
Failed run (Nov 16) - Run #19398864335
- find command took 96-99 seconds
- Found error:
ERROR: 1 dead links found in docs/api-reference/configuration-deprecated.md !
Recent "successful" run on master - Run #20147672041
- find command took only 5 seconds
- Reports "All links are good!" despite 21+ broken URLs
Local verification
# This returns 404
curl -sI "https://github.com/shakacode/react_on_rails/blob/master/lib/generators/react_on_rails/install_generator.rb" | head -1
# HTTP/2 404
# Local tool catches it
npx markdown-link-check docs/api-reference/redux-store-api.md --config .github/markdown-link-check-config.json
# ERROR: 4 dead links found!Root Cause Theory
Something changed in the GitHub Actions environment between Nov 16 and Nov 24 that causes the Docker container running markdown-link-check to complete almost instantly (~5 seconds for 102 files) without making actual HTTP requests.
The 5-second completion time is impossible if network requests are being made - each external link check takes 0.5-1 second minimum.
Workflow Configuration
.github/workflows/check-markdown-links.yml:
- Uses
Wandalen/[email protected]wrapper - Wraps
tcort/github-action-markdown-link-check@a800ad5f1c35bf61987946fd31c15726a1c9f2ba - Config file:
.github/markdown-link-check-config.json
Impact
The link checker CI is not functioning as a safety net - broken links can merge to master undetected.
Possible Solutions
- Investigate why Docker container isn't making HTTP requests
- Switch to a different link checker (e.g., Linkspector recommended in the deprecation notice)
- Add verbose logging to diagnose the issue
- Test without the wretry.action wrapper
Related
- PR Fix outdated paths after monorepo restructuring #2216 fixes the broken URLs introduced by the monorepo restructure
- PR Restructure monorepo with two top-level product directories #2114 was the monorepo restructure that broke the URLs
- PR Add retry logic for transient HTTP errors in markdown link checker #1899 added the wretry.action wrapper
🤖 Generated with Claude Code