Fix GH Action for link checking #32
Workflow file for this run
This file contains hidden or 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
| --- | |
| name: Check Links | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: [main] | |
| paths-ignore: [src/**, tests/**, "**.py"] | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| paths-ignore: [src/**, tests/**, "**.py"] | |
| concurrency: | |
| # New commit on branch cancels running workflows of the same branch | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| check-absolute-links: | |
| if: github.event.pull_request.draft == false | |
| runs-on: ubuntu-latest | |
| outputs: | |
| exit_code: ${{ steps.check-absolute.outputs.exit_code }} | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.11" | |
| - name: Install dependencies | |
| run: pip install requests | |
| - name: Check Absolute Links | |
| id: check-absolute | |
| run: | | |
| # Only check absolute links (http/https), not relative links | |
| python docs/link_checker.py --dir docs/book --substring "http" --validate-links --timeout 15 --ci-mode | |
| # Store the exit code in a variable | |
| echo "exit_code=$?" >> $GITHUB_OUTPUT | |
| continue-on-error: true | |
| - name: Fail if links are broken | |
| if: steps.check-absolute.outputs.exit_code != '0' | |
| run: exit 1 | |
| check-relative-links: | |
| if: github.event.pull_request.draft == false | |
| runs-on: ubuntu-latest | |
| outputs: | |
| exit_code: ${{ steps.check-relative.outputs.exit_code }} | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v4 | |
| with: | |
| python-version: "3.11" | |
| - name: Check Relative Links | |
| id: check-relative | |
| run: | | |
| # Check if relative links resolve within the repository | |
| python scripts/check_relative_links.py --dir docs/book | |
| # Store the exit code in a variable | |
| echo "exit_code=$?" >> $GITHUB_OUTPUT | |
| continue-on-error: true | |
| - name: Fail if links are broken | |
| if: steps.check-relative.outputs.exit_code != '0' | |
| run: exit 1 | |
| summary: | |
| needs: [check-absolute-links, check-relative-links] | |
| if: always() && github.event.pull_request.draft == false | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Create Summary | |
| run: |- | |
| echo "# Documentation Link Check Results" >> $GITHUB_STEP_SUMMARY | |
| # Initialize FAILED variable | |
| FAILED=false | |
| # Check for failures in absolute links job | |
| if [[ "${{ needs.check-absolute-links.outputs.exit_code }}" != "0" ]]; then | |
| echo "❌ **Absolute links check failed**" >> $GITHUB_STEP_SUMMARY | |
| echo "There are broken absolute links in the documentation. Please check the job logs for details." >> $GITHUB_STEP_SUMMARY | |
| FAILED=true | |
| else | |
| echo "✅ **Absolute links check passed**" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| # Check for failures in relative links job | |
| if [[ "${{ needs.check-relative-links.outputs.exit_code }}" != "0" ]]; then | |
| echo "❌ **Relative links check failed**" >> $GITHUB_STEP_SUMMARY | |
| echo "There are broken relative links in the documentation. Please check the job logs for details." >> $GITHUB_STEP_SUMMARY | |
| FAILED=true | |
| else | |
| echo "✅ **Relative links check passed**" >> $GITHUB_STEP_SUMMARY | |
| fi | |
| # Exit with failure if any checks failed | |
| if [[ "$FAILED" == "true" ]]; then | |
| echo "::error::One or more link checks failed. Please fix the broken links." | |
| exit 1 | |
| fi |