Skip to content

Conversation

@kellyguo11
Copy link
Contributor

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

  • Documentation update

Checklist

  • I have read and understood the contribution guidelines
  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

@github-actions github-actions bot added bug Something isn't working documentation Improvements or additions to documentation infrastructure labels Oct 29, 2025
Copy link
Contributor

@greptile-apps greptile-apps bot left a 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
Loading

4 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

Copy link
Contributor

@greptile-apps greptile-apps bot left a 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
Loading

1 file reviewed, 1 comment

Edit Code Review Agent Settings | Greptile

uses: actions/cache@v4
with:
path: .lycheecache
key: cache-lychee-${{ github.sha }}
Copy link
Contributor

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

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

Labels

bug Something isn't working documentation Improvements or additions to documentation infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants