Make it easier to run lychee locally #26
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
.github/scripts/check-links.sh- Executable bash script to run lychee locally via Docker with proper signal handling and TTY detection.github/scripts/dependencies.dockerfile- Tracks lychee version for Renovate auto-updates using pinned SHA.lychee.toml- Centralized lychee configuration file with settings migrated from old workflow args.github/workflows/reusable-check-links.yml- New workflow that uses the local script instead of lychee-action.github/workflows/build.yml- Changed job frommarkdown-link-checktocheck-links.github/workflows/reusable-markdown-link-check.yml- Replaced by new workflow approach.gitignore- Added.kotlindirectory to ignore Kotlin build cacheBenefits
✅ Easy local execution: Developers can now run
./github/scripts/check-links.shto check links locally✅ Centralized config: All lychee settings are now in
.lychee.tomlinstead 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:
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/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)api.scorecard.dev/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)app.fossa.com/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)cassandra.apache.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)central.sonatype.com/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)cloud-native.slack.com/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)cloud.google.com/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)contrib.rocks/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)developer.mend.io/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)docs.aws.amazon.com/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)docs.cloudfoundry.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)docs.groovy-lang.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)docs.jboss.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)docs.oracle.com/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)en.wikipedia.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)groovy-lang.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)hadoop.apache.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)hbase.apache.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)img.shields.io/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)kafka.apache.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)opentelemetry.io/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)plugins.jenkins.io/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)scorecard.dev/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)semver.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)solr.apache.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)www.eclipse.org/usr/local/bin/lychee --verbose --config .lychee.toml .(dns block)www.jaegertracing.io/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.