Jump straight into article #30
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Check that all links are valid, i.e. not broken | |
name: Check links | |
# Run script on the 1st day of the month. | |
# 1st as the first letter of this repo is the 1st letter in the alphabet. | |
on: | |
push: | |
pull_request: | |
schedule: | |
- cron: "0 0 1 * *" | |
jobs: | |
check-links: | |
runs-on: ubuntu-latest | |
env: | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- uses: actions/checkout@v4 | |
# The link checker will only work if mlc_config.json is a valid JSON | |
- name: Validate JSON | |
uses: docker://orrosenblatt/validate-json-action:latest | |
env: | |
INPUT_SCHEMA: .github/workflows/valid_json_schema.json | |
INPUT_JSONS: mlc_config.json | |
# These are status code that cannot be ignored. | |
# | |
# If there is a valid external link that fails, | |
# add it to mlc_config.json | |
- name: External links must be checked, do not allow '0' in the 'aliveStatusCodes' of mlc_config.json | |
run: if [[ $(grep --regexp "[^0-9]0[^0-9]" mlc_config.json | wc --lines) == "1" ]]; then echo "FOUND"; exit 42; fi | |
- name: Internal links must checked, do not allow '400' in the 'aliveStatusCodes' of mlc_config.json | |
run: if [[ $(grep --regexp "[^0-9]400[^0-9]" mlc_config.json | wc --lines) == "1" ]]; then echo "FOUND"; exit 42; fi | |
# For an indented block, a link to a broken image is ignored, as the link checker assumes it to be code. | |
# In our case, it is not: for us, it is usually an admonition (i.e. a 'question' or 'info' block) | |
# Here all indented text is unindented | |
# https://github.com/UPPMAX/UPPMAX-documentation/issues/114 | |
- name: unindent text | |
run: ./scripts/unindent_text.sh | |
- uses: gaurav-nelson/github-action-markdown-link-check@v1 | |
with: | |
config-file: 'mlc_config.json' | |
use-quiet-mode: 'yes' | |
use-verbose-mode: 'no' | |