Skip to content

ci: add automated markdown link check workflow#8318

Draft
dashitongzhi wants to merge 1 commit into
nextcloud:mainfrom
dashitongzhi:ci/add-markdown-link-check-20260614091809
Draft

ci: add automated markdown link check workflow#8318
dashitongzhi wants to merge 1 commit into
nextcloud:mainfrom
dashitongzhi:ci/add-markdown-link-check-20260614091809

Conversation

@dashitongzhi

Copy link
Copy Markdown

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 main unnoticed.

What the workflow does

  • Runs on every PR that touches *.md files
  • Runs on every push to main that touches *.md
  • Runs weekly on Mondays at 06:00 UTC to catch external link rot
  • Can be triggered manually via workflow_dispatch
  • Concurrency-cancelled per ref to avoid duplicate sweeps
  • Uses pinned SHAs for all third-party actions (matches repo convention)
  • Excludes archive.org, localhost, loopback, and the nextcloud.local placeholder targets that cannot be reliably verified from CI

Files changed

  • .github/workflows/markdown-link-check.yml (new, 83 lines)

Test Plan

  • Workflow file is valid YAML and follows existing repo conventions
  • Branch ci/add-markdown-link-check-20260614091809 exists on the fork
  • CI passes (first run will validate lychee install + scan)

- 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.
Copilot AI review requested due to automatic review settings June 14, 2026 01:19
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.yml to run link validation via lychee.
  • 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'
@szaimen szaimen added 2. developing Work in progress enhancement New feature or request labels Jun 15, 2026
@szaimen szaimen marked this pull request as draft June 15, 2026 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2. developing Work in progress enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants