Add CI check for broken mattermost.com links in webapp (#35093)

* Add CI check for broken mattermost.com links in webapp

Add a script that scans the webapp source files for links to mattermost.com
domains and tests each unique URL for 404s. This helps detect broken
documentation and marketing links early.

- New script: webapp/scripts/check-external-links.mjs
- New npm target: check-external-links
- New CI job in webapp-ci.yml to run on every commit

* Add --markdown flag for GitHub Actions job summary

* Fix job summary: use pipefail and suppress progress output

* Require mattermost.com links to use /pl/ permalink format

* Require all mattermost.com links (including subdomains) to use /pl/

* Allow exceptions for push servers and root domain

* Make non-permalink URLs warnings instead of errors

* Add User-Agent header and retry GET on 403

* Follow redirects when checking URLs

Check the final destination of redirects to catch broken links that
redirect to error pages. If a redirect response has the Cloudflare
cf-mitigated header, assume the URL is OK and stop following.

* Simplify link checker code

- Combine PUSH_SERVER_PATTERN and HPNS_PATTERN into single regex
- Simplify validatePermalink to return boolean (reason was unused)
- Consolidate Cloudflare header checks in processResponse

* replace broken links with valid ones

* updates
This commit is contained in:
Jesse Hallam
2026-03-11 17:43:08 -04:00
committed by GitHub
parent baf2bcb6f5
commit 5aefff30cf
7 changed files with 428 additions and 6 deletions
+17
View File
@@ -45,6 +45,23 @@ jobs:
run: |
npm run i18n-extract:check
check-external-links:
needs: check-lint
runs-on: ubuntu-24.04
timeout-minutes: 15
defaults:
run:
working-directory: webapp
steps:
- name: ci/checkout-repo
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: ci/setup
uses: ./.github/actions/webapp-setup
- name: ci/check-external-links
run: |
set -o pipefail
npm run check-external-links -- --markdown | tee -a $GITHUB_STEP_SUMMARY
check-types:
needs: check-lint
runs-on: ubuntu-24.04