CI: Add Lychee CI test to check for broken links
closes: #17879 Signed-off-by: Damien Lejay <damien@lejay.be> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
32d6bd6df2
commit
e32465190c
15
.github/workflows/link-check.yml
vendored
Normal file
15
.github/workflows/link-check.yml
vendored
Normal file
@ -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 .
|
||||||
2
Filelist
2
Filelist
@ -12,6 +12,7 @@ SRC_ALL = \
|
|||||||
.github/workflows/ci.yml \
|
.github/workflows/ci.yml \
|
||||||
.github/workflows/codeql-analysis.yml \
|
.github/workflows/codeql-analysis.yml \
|
||||||
.github/workflows/coverity.yml \
|
.github/workflows/coverity.yml \
|
||||||
|
.github/workflows/link-check.yml \
|
||||||
.github/actions/test_artifacts/action.yml \
|
.github/actions/test_artifacts/action.yml \
|
||||||
.github/dependabot.yml \
|
.github/dependabot.yml \
|
||||||
.gitignore \
|
.gitignore \
|
||||||
@ -24,6 +25,7 @@ SRC_ALL = \
|
|||||||
ci/config.mk*.sed \
|
ci/config.mk*.sed \
|
||||||
ci/if_ver*.vim \
|
ci/if_ver*.vim \
|
||||||
ci/if_feat_check.vim \
|
ci/if_feat_check.vim \
|
||||||
|
ci/lychee.toml \
|
||||||
ci/setup-xvfb.sh \
|
ci/setup-xvfb.sh \
|
||||||
ci/setup-sway.sh \
|
ci/setup-sway.sh \
|
||||||
ci/remove_snap.sh \
|
ci/remove_snap.sh \
|
||||||
|
|||||||
47
ci/lychee.toml
Normal file
47
ci/lychee.toml
Normal file
@ -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',
|
||||||
|
]
|
||||||
Reference in New Issue
Block a user