| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- name: Check URLs from changed files
- on:
- push:
- pull_request:
- permissions:
- # needed for checkout code
- contents: read
- # This allows a subsequently queued workflow run to interrupt/wait for previous runs
- concurrency:
- group: '${{ github.workflow }} @ ${{ github.run_id }}'
- cancel-in-progress: false # true = interrupt, false = wait
- jobs:
- # NOTE: tj-actions/changed-files.
- # For push events you need to include fetch-depth: 0 | 2 depending on your use case.
- # 0: retrieve all history for all branches and tags
- # 1: retrieve only current commit (by default)
- # 2: retrieve until the preceding commit
- get-changed-files:
- name: Get changed files
- runs-on: ubuntu-latest
- outputs:
- fetch-depth: ${{ steps.set-params.outputs.fetch-depth }}
- files: ${{ steps.set-files.outputs.files }}
- files-len: ${{ steps.set-files.outputs.files-len }}
- matrix: ${{ steps.set-matrix.outputs.matrix }}
- steps:
- - name: Determine workflow params
- id: set-params
- run: |
- echo "fetch_depth=0" >> $GITHUB_OUTPUT
- if [ "${{ github.event_name }}" == "pull_request" ]; then
- echo "fetch_depth=0" >> $GITHUB_OUTPUT
- fi
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: ${{ steps.set-params.outputs.fetch-depth }}
- - name: Get changed files
- id: changed-files
- uses: tj-actions/changed-files@v45.0.5
- with:
- separator: " "
- json: true
- - id: set-files
- run: |
- echo "${{ steps.changed-files.outputs.all_changed_files }}" \
- | jq --raw-output '. | join(" ")' \
- | sed -e 's/^/files=/' \
- >> $GITHUB_OUTPUT
- echo "${{ steps.changed-files.outputs.all_changed_files }}" \
- | jq --raw-output '. | length' \
- | sed -e 's/^/files-len=/' \
- >> $GITHUB_OUTPUT
- - id: set-matrix
- run: |
- echo "{\"file\":${{ steps.changed-files.outputs.all_changed_files }}}" \
- | sed -e 's/^/matrix=/' \
- >> $GITHUB_OUTPUT
- check-urls:
- name: Check @ ${{ matrix.file }}
- if: ${{ fromJSON(needs.get-changed-files.outputs.files-len) > 0 }}
- needs: [get-changed-files]
- runs-on: ubuntu-latest
- strategy:
- matrix: ${{ fromJSON(needs.get-changed-files.outputs.matrix) }}
- max-parallel: 10
- fail-fast: false
- steps:
- - name: Checkout
- if: ${{ endsWith(matrix.file, '.yml') || endsWith(matrix.file, '.md') }}
- uses: actions/checkout@v4
- with:
- fetch-depth: ${{ needs.get-changed-files.outputs.fetch-depth }}
- - name: Setup Ruby v2.6
- if: ${{ endsWith(matrix.file, '.yml') || endsWith(matrix.file, '.md') }}
- uses: ruby/setup-ruby@v1
- with:
- ruby-version: 2.6
- - name: Install awesome_bot
- if: ${{ endsWith(matrix.file, '.yml') || endsWith(matrix.file, '.md') }}
- run: |
- gem install awesome_bot
- - name: Set output
- id: set-output
- # FILENAME takes the complete file path and strips everything before the final '/'
- # FILEPATH replaces all '/' with '-' in the file path since '/' is not allowed in upload artifact name
- # Due to a bug in actions/download-artifact, we need to rename README.md to BASE_README.md
- run: |
- echo "FILENAME=$(echo ${{ matrix.file }} | grep -oE '[a-zA-Z0-9_-]+(\.yml|\.md)')" >> "$GITHUB_OUTPUT"
- file_path="${{ matrix.file }}"
- file_path="${file_path//\//-}"
- if [[ "$file_path" == "README.md" ]]; then
- file_path="BASE_README.md"
- fi
- echo "FILEPATH=${file_path}" >> "$GITHUB_OUTPUT"
- - name: "Check URLs of file: ${{ matrix.file }}"
- if: ${{ endsWith(matrix.file, '.yml') || endsWith(matrix.file, '.md') }}
- run: |
- awesome_bot "${{ matrix.file }}" --allow-redirect --allow-dupe --allow-ssl || true;
- - uses: actions/upload-artifact@v4
- with:
- name: ${{ steps.set-output.outputs.FILEPATH }}
- path: ${{ github.workspace }}/ab-results-*.json
- reporter:
- name: GitHub report
- needs: [get-changed-files, check-urls]
- runs-on: ubuntu-latest
- steps:
- - name: Checkout # for having the sources of the local action
- uses: actions/checkout@v4
- # download and unzip the ab-results-*.json generated by job-matrix: check-urls
- - name: Download artifacts
- uses: actions/download-artifact@v4
- - name: Generate Summary Report
- uses: ./.github/actions/awesomebot-gh-summary-action
- with:
- ab-root: ${{ github.workspace }}
- files: ${{ needs.get-changed-files.outputs.files }}
- separator: " "
- append-heading: ${{ true }}
|