Skip to content

chore(deps-dev): bump postcss from 8.5.6 to 8.5.10 in /docs #1860

chore(deps-dev): bump postcss from 8.5.6 to 8.5.10 in /docs

chore(deps-dev): bump postcss from 8.5.6 to 8.5.10 in /docs #1860

name: "CI: Check Links"
on:
pull_request:
branches: [main, master]
push:
branches:
- main
workflow_dispatch:
jobs:
link-check:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Run Lychee link checker
uses: lycheeverse/lychee-action@v2
id: lychee
with:
# Check all markdown files
# Exclude news.ycombinator.com as it returns 503 for automated requests (anti-bot protection)
# Specific URL exclusions are in .lycheeignore
args: --verbose --no-progress --max-cache-age 1d --accept 200..=299,403 --exclude '^file://' --exclude 'localhost' --exclude '127\.0\.0\.1' --exclude 'news\.ycombinator\.com' '**/*.md'
# Output results to file for parsing
output: lychee-output.md
# Don't fail the build on broken links (warning mode)
fail: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Parse link check results
id: parse-results
if: always()
run: |
EXIT_CODE="${{ steps.lychee.outputs.exit_code }}"
# Debug info
echo "--- DEBUG ---"
echo "Exit code: '$EXIT_CODE'"
echo "Working dir: $(pwd)"
echo "lychee-output.md exists: $(test -f lychee-output.md && echo YES || echo NO)"
echo "GITHUB_ENV path: $GITHUB_ENV"
ls -la lychee-output.md 2>/dev/null || echo "lychee-output.md not found"
echo "--- END DEBUG ---"
# Show summary if output file exists
if [ -f "lychee-output.md" ]; then
echo "=== Link Check Summary ==="
cat lychee-output.md
fi
# Set status: check output file exists first (means lychee actually ran)
if [ ! -f "lychee-output.md" ]; then
echo "STATUS_ICON=❌" >> "$GITHUB_ENV"
echo "STATUS_TEXT=Link checker failed to run (no output file)" >> "$GITHUB_ENV"
echo "COLOR=#dc3545" >> "$GITHUB_ENV"
elif [ "$EXIT_CODE" = "0" ]; then
echo "STATUS_ICON=✅" >> "$GITHUB_ENV"
echo "STATUS_TEXT=All links are working" >> "$GITHUB_ENV"
echo "COLOR=#36a64f" >> "$GITHUB_ENV"
else
echo "STATUS_ICON=⚠️" >> "$GITHUB_ENV"
echo "STATUS_TEXT=Found broken links (exit code: $EXIT_CODE)" >> "$GITHUB_ENV"
echo "COLOR=#ffa500" >> "$GITHUB_ENV"
fi
echo "Wrote status to GITHUB_ENV"
# Extract up to 5 broken links (lychee format: "* [404] <https://...> | ...")
if [ -f "lychee-output.md" ]; then
BROKEN=$(grep -oP '\[[45]\d\d\] <?\Khttps?://[^\s|>]+' lychee-output.md | sed 's/>*$//' | head -5 | sed 's/^/• /' || true)
echo "Extracted broken links: '$BROKEN'"
else
BROKEN=""
fi
{
echo "BROKEN_LINKS<<EOF"
echo "$BROKEN"
echo "EOF"
} >> "$GITHUB_ENV"
- name: Send results to Slack
if: always()
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
SLACK_CHANNEL: ${{ vars.SLACK_CHANNEL }}
SLACK_TITLE: "🔗 Link Check Results"
SLACK_COLOR: ${{ env.COLOR }}
SLACK_MESSAGE: |
*Status:* ${{ env.STATUS_ICON }} ${{ env.STATUS_TEXT }}
*Branch:* `${{ github.ref_name }}`
${{ env.BROKEN_LINKS }}
<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}${{ github.event.pull_request.number && format('?pr={0}', github.event.pull_request.number) || '' }}|View broken links>