name: Links Checker on: ## Allow triggering this workflow manually via GitHub CLI/web workflow_dispatch: ## Run this workflow automatically every month schedule: - cron: '0 0 1 * *' jobs: link_checker: name: Check links and create automated issue if needed runs-on: ubuntu-latest env: REPORT_FILE: links-report steps: ## Check out code using Git - uses: actions/checkout@v3 - name: Check all links at README.md but skips translations files id: lychee uses: lycheeverse/lychee-action@v1.4.1 with: output: ${{ env.REPORT_FILE }} format: markdown ## Do not fail this step on broken links fail: false ## Allow pages replying with 200 (Ok), 204 (No Content), ## 206 (Partial Content) in at most 20 seconds with HTML content. args: >- --verbose --accept 200,204,206 --headers "accept=text/html" --timeout 20 --max-concurrency 10 --no-progress README.md env: ## Avoid rate limiting when checking github.com links GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Lychee's exit code ## https://github.com/lycheeverse/lychee#exit-codes run: echo Lychee exit with ${{ steps.lychee.outputs.exit_code }} - name: Find the last report issue open uses: micalevisk/last-issue-action@v1.2 id: last_issue with: state: open labels: | report automated issue env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Create issue from report file if: ${{ steps.last_issue.outputs.has_found == 'false' }} uses: peter-evans/create-issue-from-file@v4 with: title: Link checker report content-filepath: ${{ env.REPORT_FILE }} issue-number: ${{ steps.last_issue.outputs.issue_number }} labels: | report automated issue - name: Update last report open issue created if: ${{ steps.last_issue.outputs.has_found == 'true' }} uses: peter-evans/create-issue-from-file@v4 with: title: Link checker report content-filepath: ${{ env.REPORT_FILE }} issue-number: ${{ steps.last_issue.outputs.issue_number }} labels: | report automated issue - name: Close last report open issue if: ${{ steps.lychee.outputs.exit_code == 0 }} uses: peter-evans/close-issue@v2 with: issue-number: ${{ steps.last_issue.outputs.issue_number }}