CI: Add Lychee CI test to check for broken links
Commit:
https://github.com/vim/vim/commit/e32465190c22af35834c81f6e5f123533389e7b5
Author: Damien Lejay <[email protected]>
Date: Sun Aug 10 10:28:58 2025 +0200
CI: Add Lychee CI test to check for broken links
closes: https://github.com/vim/vim/issues/17879
Signed-off-by: Damien Lejay <[email protected]>
Signed-off-by: Christian Brabandt <[email protected]>
diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml
new file mode 100644
index 000000000..e16515f0d
--- /dev/null
+++ b/.github/workflows/link-check.yml
@@ -0,0 +1,15 @@
+# .github/workflows/link-check.yml
+name: Check Links
+on:
+ workflow_dispatch:
+ schedule:
+ - cron: '0 3 * * 0' # Every Sunday at 03:00 UTC
+jobs:
+ lychee:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Run Lychee
+ uses: lycheeverse/lychee-action@v2
+ with:
+ args: --verbose --config ci/lychee.toml .
diff --git a/Filelist b/Filelist
index 5153ded57..b52506d75 100644
--- a/Filelist
+++ b/Filelist
@@ -12,6 +12,7 @@ SRC_ALL = \
.github/workflows/ci.yml \
.github/workflows/codeql-analysis.yml \
.github/workflows/coverity.yml \
+ .github/workflows/link-check.yml \
.github/actions/test_artifacts/action.yml \
.github/dependabot.yml \
.gitignore \
@@ -24,6 +25,7 @@ SRC_ALL = \
ci/config.mk*.sed \
ci/if_ver*.vim \
ci/if_feat_check.vim \
+ ci/lychee.toml \
ci/setup-xvfb.sh \
ci/setup-sway.sh \
ci/remove_snap.sh \
diff --git a/ci/lychee.toml b/ci/lychee.toml
new file mode 100644
index 000000000..4077e7795
--- /dev/null
+++ b/ci/lychee.toml
@@ -0,0 +1,47 @@
+############################# Runtime #############################
+
+# Reasonable concurrency to avoid rate-limiting small hosts.
+max_concurrency = 14
+
+# File extensions to scan
+extensions = ["c", "h", "md", "html", "txt"]
+
+############################# Requests ############################
+
+# Accepted status codes
+# - Include 429 (Too Many Requests) to avoid marking throttled links as dead.
+accept = ["100..=103", "200..=299", "429"]
+
+# Retry each request a few times on transient network errors
+retries = 2
+retry_wait_time = 2
+
+# Timeout per request in seconds
+timeout = 20
+
+############################# Exclusions ##########################
+
+exclude = [
+ '^https?://sys/file$',
+ '^file://.*',
+ '^https?://(www\.)?badges\.debian\.net/.*$',
+ '^https?://(www\.)?repology\.org/.*$',
+ '^https?://scan\.coverity\.com/.*$',
+ '^https?://(www\.)?img\.shields\.io/.*$',
+ '^https?://(www\.)?fossies\.org/.*$',
+ '^https?://(www\.)?adobe\.com.*$',
+ '^https?://(www\.)?google\.com.*$',
+ '^https?://(www\.)?forum\.vmssoftware\.com/.*$',
+ '^http://vim\.sourceforge\.net/scripts/script\.php\?script_id=40$',
+ '^https://is\.gd/.*$',
+ '^https://wiki\.contextgarden\.net/Vim$',
+ '^https://github\.com/you/foobar\.git$',
+ '^https?://flatassembler\.net',
+ '^https?://www\.fleiner\.com/vim/download.html',
+]
+
+# Lychee only reads UTF-8 files
+exclude_path = [
+ 'src/po',
+ 'src/testdir',
+]
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/vim_dev/E1ul1fy-0067CI-Nz%40256bit.org.