Update books/free-programming-books-subjects.md #454
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
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/[email protected] | |
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 | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: ${{ needs.get-changed-files.outputs.fetch-depth }} | |
- name: Setup Ruby v2.6 | |
uses: ruby/setup-ruby@v1 | |
with: | |
ruby-version: 2.6 | |
- name: Install awesome_bot | |
run: | | |
gem install awesome_bot | |
- name: "Check URLs of file: ${{ matrix.file }}" | |
run: | | |
awesome_bot "${{ matrix.file }}" --allow-redirect --allow-dupe --allow-ssl || true; | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: awesomebot-results | |
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 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: awesomebot-results | |
- 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 }} |