Skip to content

Conversation

Copy link

Copilot AI commented Jun 30, 2025

Apply changes from open-telemetry/opentelemetry-java-instrumentation#14155 to make it easier to run lychee locally.

Summary

This PR replaces the existing lychee-action based link checking with a local script approach that makes it much easier for developers to run link checking locally during development.

Changes Made

  • Added .github/scripts/check-links.sh - Executable bash script to run lychee locally via Docker with proper signal handling and TTY detection
  • Added .github/scripts/dependencies.dockerfile - Tracks lychee version for Renovate auto-updates using pinned SHA
  • Added .lychee.toml - Centralized lychee configuration file with settings migrated from old workflow args
  • Added .github/workflows/reusable-check-links.yml - New workflow that uses the local script instead of lychee-action
  • Updated .github/workflows/build.yml - Changed job from markdown-link-check to check-links
  • Removed .github/workflows/reusable-markdown-link-check.yml - Replaced by new workflow approach
  • Updated .gitignore - Added .kotlin directory to ignore Kotlin build cache

Benefits

Easy local execution: Developers can now run ./github/scripts/check-links.sh to check links locally
Centralized config: All lychee settings are now in .lychee.toml instead of scattered in workflow args
Auto-updates: Renovate can automatically update lychee versions via the dependencies.dockerfile
Docker-based: No need to install lychee locally, uses Docker for consistent execution
Signal handling: Proper Docker signal forwarding and TTY detection for interactive use

Usage

To check links locally, developers can now simply run:

# Check all links with the same configuration as CI
./.github/scripts/check-links.sh

# With GitHub token for higher rate limits
GITHUB_TOKEN=your_token ./.github/scripts/check-links.sh

The script will automatically use the same Docker image and configuration as the CI workflow, ensuring consistency between local development and CI environments.

Fixes #25.

Warning

Firewall rules blocked me from connecting to one or more addresses

I tried to connect to the following addresses, but was blocked by firewall rules:

  • activemq.apache.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • api.scorecard.dev
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • app.fossa.com
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • cassandra.apache.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • central.sonatype.com
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • cloud-native.slack.com
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • cloud.google.com
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • contrib.rocks
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • developer.mend.io
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • docs.aws.amazon.com
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • docs.cloudfoundry.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • docs.groovy-lang.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • docs.jboss.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • docs.oracle.com
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • en.wikipedia.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • groovy-lang.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • hadoop.apache.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • hbase.apache.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • img.shields.io
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • kafka.apache.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • opentelemetry.io
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • plugins.jenkins.io
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • scorecard.dev
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • semver.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • solr.apache.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • www.eclipse.org
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)
  • www.jaegertracing.io
    • Triggering command: /usr/local/bin/lychee --verbose --config .lychee.toml . (dns block)

If you need me to access, download, or install something from one of these locations, you can either:


💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

Copilot AI changed the title [WIP] Make it easier to run lychee locally Make it easier to run lychee locally Jun 30, 2025
Copilot AI requested a review from trask June 30, 2025 00:29
Copilot finished work on behalf of trask June 30, 2025 00:29
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.

Make it easier to run lychee locally

3 participants