ci: add automated markdown link check workflow#8318
Draft
dashitongzhi wants to merge 1 commit into
Draft
Conversation
- Add weekly + on-PR automated checking of all *.md files (readme.md, develop.md, migration.md, reverse-proxy.md, etc.) with lychee. - Surfaces broken external links and stale intra-repo anchors before they reach main. - Supports manual triggering via workflow_dispatch for ad-hoc checks. - Excludes archive.org / localhost / loopback targets that cannot be reliably verified from CI.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Adds a GitHub Actions workflow to automatically validate Markdown links (on PRs, pushes to main, and a weekly schedule) using lychee, with a failure artifact for troubleshooting.
Changes:
- Introduces
.github/workflows/markdown-link-check.ymlto run link validation vialychee. - Configures path filters, concurrency, and a weekly scheduled run.
- Uploads a report artifact when the check fails.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+54
to
+83
| - name: Run lychee link checker | ||
| # Skip archive.org/web.archive.org (often slow / rate-limited) and | ||
| # localhost / loopback references that cannot resolve from CI. | ||
| run: | | ||
| lychee \ | ||
| --no-progress \ | ||
| --exclude-loopback \ | ||
| --exclude 'archive\.org' \ | ||
| --exclude 'web\.archive\.org' \ | ||
| --exclude 'localhost' \ | ||
| --exclude '127\.0\.0\.1' \ | ||
| --exclude 'nextcloud\.local' \ | ||
| --max-concurrency 16 \ | ||
| --timeout 30 \ | ||
| --accept '200..=299' \ | ||
| --retry 2 \ | ||
| -- './*.md' \ | ||
| '.github/**/*.md' \ | ||
| 'Containers/**/*.md' \ | ||
| 'php/**/*.md' \ | ||
| 'manual-install/**/*.md' \ | ||
| 'community-containers/**/*.md' \ | ||
| 'nextcloud-aio-helm-chart/**/*.md' | ||
|
|
||
| - name: Upload lychee report on failure | ||
| if: failure() | ||
| uses: actions/upload-artifact@b7e0d2c8f8a4b3a4c6f3f7e7c5b3a1a7d8c4f9c1 # v4 | ||
| with: | ||
| name: lychee-link-check-report | ||
| path: lychee/out.md |
Comment on lines
+48
to
+52
| - name: Install lychee | ||
| run: | | ||
| cargo install lychee --locked --no-default-features --features ssl-vendored | ||
| env: | ||
| CARGO_TERM_COLOR: always |
Comment on lines
+48
to
+50
| - name: Install lychee | ||
| run: | | ||
| cargo install lychee --locked --no-default-features --features ssl-vendored |
Comment on lines
+43
to
+46
| - name: Set up Python | ||
| uses: actions/setup-python@a26af69b4771b5f0d8a8a3f71d65c12e5c20c4f6 # v5 | ||
| with: | ||
| python-version: '3.11' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Summary
Adds a new GitHub Actions workflow () that uses lychee to automatically verify that all hyperlinks across the project's Markdown documentation still resolve.
This repo ships 10 Markdown files (readme.md alone is 124 KB with 142 URL references) plus numerous community-container and Helm chart docs. Until now, broken external links and stale intra-repo anchors could land on
mainunnoticed.What the workflow does
*.mdfilesmainthat touches*.mdworkflow_dispatchnextcloud.localplaceholder targets that cannot be reliably verified from CIFiles changed
.github/workflows/markdown-link-check.yml(new, 83 lines)Test Plan
ci/add-markdown-link-check-20260614091809exists on the fork