-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Adds automated job to check for broken links in documentation and fixes some links #3888
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Greptile Overview
Greptile Summary
Adds automated link checking via GitHub Actions using lychee to prevent broken documentation links, and fixes three outdated external links
- New workflow (
.github/workflows/check-links.yml): Triggers on PR/push to docs, weekly schedule, and manual dispatch; uses lychee-action v2 with caching, comprehensive exclusions, and retry logic - Fixed links: Updated Isaac Sim forums URL, Isaac Sim docs URL, and ETH Zurich Euler cluster docs URL to current domains
- All updated links verified working (HTTP 200 responses)
- Workflow configuration follows existing patterns in the repository
Confidence Score: 5/5
- This PR is safe to merge with no risk - adds valuable automation and fixes verified broken links
- Perfect score because: (1) new workflow follows repository conventions with proper copyright headers and concurrency controls, (2) lychee-action is a well-established tool with appropriate configuration including caching and exclusions, (3) all three updated links verified working via HTTP checks, (4) changes are purely additive automation plus documentation fixes with no functional code changes, (5) workflow triggers are sensibly configured for maximum benefit without excessive CI load
- No files require special attention - all changes are straightforward and well-implemented
Important Files Changed
File Analysis
| Filename | Score | Overview |
|---|---|---|
| .github/workflows/check-links.yml | 5/5 | New workflow using lychee to check documentation links on PRs, pushes, and weekly schedule with comprehensive exclusions and caching |
| .github/ISSUE_TEMPLATE/question.md | 5/5 | Updated Isaac Sim forums link from deprecated docs.omniverse.nvidia.com to current forums.developer.nvidia.com domain |
| README.md | 5/5 | Updated Isaac Sim documentation link to new docs.isaacsim.omniverse.nvidia.com domain structure |
| docs/source/deployment/cluster.rst | 5/5 | Updated ETH Zurich Euler cluster documentation link to new gdc-docs.ethz.ch domain |
Sequence Diagram
sequenceDiagram
participant Dev as Developer
participant GH as GitHub
participant WF as Check Links Workflow
participant Cache as Lychee Cache
participant Lychee as Lychee Action
participant Docs as Documentation Files
alt PR with doc changes
Dev->>GH: Create/Update PR (docs/** or **.md)
GH->>WF: Trigger workflow
else Push to main/devel/release
Dev->>GH: Push to protected branch
GH->>WF: Trigger workflow
else Weekly schedule
Note over GH,WF: Every Sunday at midnight UTC
GH->>WF: Trigger workflow
else Manual trigger
Dev->>GH: workflow_dispatch
GH->>WF: Trigger workflow
end
WF->>GH: Checkout repository
WF->>Cache: Restore lychee cache (1 day max age)
Cache-->>WF: Return cached results
WF->>Lychee: Run link checker
Lychee->>Docs: Scan *.md, **/*.md, docs/**/*.rst, docs/**/*.html
Lychee->>Lychee: Apply exclusions (localhost, mailto, file://, etc)
loop For each link found
Lychee->>Lychee: Check cache first
alt Link not in cache or expired
Lychee->>External: HTTP request (3 retries, 5s wait, 30s timeout)
External-->>Lychee: HTTP status code
else Link in cache
Lychee->>Lychee: Use cached result
end
end
Lychee->>WF: Return results
WF->>WF: Write to lychee-output.md
WF->>GH: Print to logs
WF->>GH: Add to step summary
alt Broken links found
WF->>GH: Fail workflow with error message
GH->>Dev: Notification of failure
else All links valid
WF->>GH: Pass workflow
GH->>Dev: Success notification
end
4 files reviewed, no comments
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Greptile Overview
Greptile Summary
Adds automated documentation link checking using the lychee GitHub Action to catch broken links before they reach production. The workflow runs on PR changes to docs/markdown files, pushes to main branches, weekly schedule, and manual triggers.
Key changes:
- Comprehensive link checker configuration with sensible exclusions (localhost, example domains, build artifacts)
- Configurable retry logic (3 retries, 5s wait, 30s timeout) for handling transient failures
- Caching support to avoid redundant checks of previously validated links
- Clear output formatting with results sent to both logs and GitHub step summary
- Fixes several broken external links (Isaac Sim docs, forums, ETH Zurich documentation)
Confidence Score: 4/5
- This PR is safe to merge with low risk - adds useful automation without modifying existing functionality
- The workflow configuration is solid with proper error handling, reasonable timeouts, and comprehensive exclusions. Cache key strategy could be optimized for better performance, but this is a minor efficiency concern that doesn't affect functionality
- No files require special attention - the workflow follows established patterns in the repository
Important Files Changed
File Analysis
| Filename | Score | Overview |
|---|---|---|
| .github/workflows/check-links.yml | 4/5 | Adds automated link checker using lychee with comprehensive configuration - cache key could be optimized for better reuse across PRs |
Sequence Diagram
sequenceDiagram
participant GH as GitHub Event
participant W as Workflow
participant C as Cache
participant L as Lychee Action
participant FS as File System
participant Net as External Links
participant Sum as Step Summary
GH->>W: Trigger (PR/Push/Schedule/Manual)
W->>FS: Checkout repository
W->>C: Restore lychee cache
C-->>W: Return cached results (if exists)
W->>L: Run link checker
L->>FS: Read *.md, docs/**/*.rst, docs/**/*.html
loop For each link found
L->>Net: Check link (with retries)
Net-->>L: HTTP status
alt Link broken
L->>L: Record error
else Link valid
L->>C: Cache result
end
end
L->>FS: Write lychee-output.md
L-->>W: Return status
W->>FS: Read output file
W->>Sum: Append to GitHub summary
alt Broken links found
W->>GH: Fail workflow
else All links valid
W->>GH: Success
end
1 file reviewed, 1 comment
| uses: actions/cache@v4 | ||
| with: | ||
| path: .lycheecache | ||
| key: cache-lychee-${{ github.sha }} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
style: cache key uses SHA which creates unique cache for every commit, preventing reuse across PRs - consider including PR number or ref in key for better cache hits
Description
Broken links often creep into the documentation without anyone noticing. This adds an automated job to check through links referenced in the docs and readmes to find any broken or outdated links.
Additionally, fixes a few broken links that were discovered by the job.
Type of change
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there