Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/links.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Checks that every link in the site (external URLs and local files) is live.
# Runs on changes to the site, weekly to catch links that break later, and on demand.
name: Links

on:
pull_request:
paths: ["site/**", ".github/workflows/links.yml"]
push:
branches: [main]
paths: ["site/**", ".github/workflows/links.yml"]
schedule:
- cron: "0 6 * * 1" # Mondays 06:00 UTC
workflow_dispatch:

permissions:
contents: read

jobs:
links:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7

# linkedin.com answers 999 to every automated request, so it is skipped.
# 429 (rate limited) is accepted so a busy host does not fail the run.
- uses: lycheeverse/lychee-action@v2.9.0
with:
args: >-
--no-progress
--max-retries 3
--retry-wait-time 5
--accept 200,429
--exclude linkedin\.com
"site/**/*.html"
fail: true
Loading