# This workflow uses the lychee-action to check the links # in your markdown files for validity. # You can exclude links via a .lycheeignore file in your repository root. # You find further information about lychee-action in the documentation at: # https://github.com/lycheeverse/lychee-action name: Check for broken links on: workflow_dispatch: schedule: # Run every weekday at 12:30 UTC - cron: '30 12 * * 1-5' jobs: Check-for-broken-links: runs-on: ubuntu-latest permissions: contents: read issues: write env: issue-lookup-label: automated-link-issue issue-content: ./lychee-out.md steps: - uses: actions/checkout@v4 - name: Restore lychee cache uses: actions/cache@v4 with: path: .lycheecache key: cache-lychee-${{ github.sha }} restore-keys: cache-lychee- - name: Link Checker id: lychee uses: lycheeverse/lychee-action@v1.10.0 with: fail: false args: --verbose --no-progress --exclude-file .lycheeignore '**/*.md' output: ${{ env.issue-content }} # Permissions (issues: read) - name: 'Look for an existing issue' if: ${{ failure() }} id: last-issue uses: micalevisk/last-issue-action@v2 # Find the last updated open issue with a `automated-issue` label: with: state: open labels: ${{ env.issue-lookup-label }} # Permissions (issues: write) - name: 'Create a new issue, or update an existing one' if: ${{ failure() }} uses: peter-evans/create-issue-from-file@v4 with: title: 'docs: Broken links found' content-filepath: ${{ env.issue-content }} # Update an existing issue if one was found (issue_number), # otherwise an empty value creates a new issue: issue-number: ${{ steps['last-issue']['outputs']['issue-number'] }} # Add a label(s) that `last-issue` can use to find this issue, # and any other relevant labels for the issue itself: labels: | ${{ env.issue-lookup-label }} broken-link, docs