GHA: start using `background: true` to parallelize job steps
No binary (build failed)
—
(log yok)
| @@ -27,7 +27,7 @@ use strict; | |
| use warnings; | |
| my @files = @ARGV; | |
| - | my $cfile = "test.c"; |
| + | my $cfile = 'test-' . (defined $ENV{'CC'} ? $ENV{'CC'} : 'gcc') . '.c'; |
| my $check = "./scripts/checksrc.pl"; | |
| my $error = 0; | |
| @@ -42,14 +42,14 @@ sub testcompile { | |
| if(defined $ENV{'CFLAGS'}) { | |
| $cflags .= ' ' . $ENV{'CFLAGS'}; | |
| } | |
| - | my $rc = system($cc . ' -c test.c -I include -W -Wall -pedantic -Werror ' . $cflags . ' ' . |
| + | my $rc = system($cc . ' -c ' . $cfile . ' -I include -W -Wall -pedantic -Werror ' . $cflags . ' ' . |
| '-Wno-unused-parameter -Wno-unused-but-set-variable ' . | |
| '-DCURL_ALLOW_OLD_MULTI_SOCKET -DCURL_DISABLE_DEPRECATION') >> 8; | |
| return $rc; | |
| } | |
| sub checksrc { | |
| - | my $rc = system($check, ('test.c')) >> 8; |
| + | my $rc = system($check, ($cfile)) >> 8; |
| return $rc; | |
| } | |
| @@ -49,48 +49,53 @@ jobs: | |
| with: | |
| persist-credentials: false | |
| + | - name: 'trim headers off all *.md files' |
| + | background: true |
| + | run: git ls-files '*.md' -z | xargs -0 -n1 .github/scripts/trimmarkdownheader.pl |
| + | |
| - name: 'install prereqs' | |
| run: | | |
| python3 -m venv ~/venv | |
| ~/venv/bin/pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary -r .github/scripts/requirements-proselint.txt | |
| - name: 'trim headers off all *.md files' | |
| - | run: git ls-files '*.md' -z | xargs -0 -n1 .github/scripts/trimmarkdownheader.pl |
| + | wait-all: |
| - | - name: 'check prose' |
| + | - name: 'check special prose' # For CHECKSRC and files with aggressive exclamation mark needs |
| + | background: true |
| run: | | |
| - | cat <<JSON > ~/.proselintrc.json |
| + | cat <<JSON > ~/.proselintrc-special.json |
| { | |
| "checks": { | |
| "annotations.misc": false, | |
| "lexical_illusions": false, | |
| - | "misc.annotations": false, |
| - | "redundancy.misc.garner": false, |
| - | "security.password": false, |
| - | "spelling.ve_of": false, |
| "typography.diacritical_marks": false, | |
| + | "typography.punctuation.exclamation": false, |
| "typography.symbols": false | |
| } | |
| } | |
| JSON | |
| source ~/venv/bin/activate | |
| - | git ls-files README '*.md' -z | grep -Evz '(CHECKSRC|DISTROS|CURLOPT_INTERFACE|interface)\.md' | xargs -0 proselint check -- |
| + | proselint check --config ~/.proselintrc-special.json docs/internals/CHECKSRC.md docs/libcurl/opts/CURLOPT_INTERFACE.md docs/cmdline-opts/interface.md |
| - | - name: 'check special prose' # For CHECKSRC and files with aggressive exclamation mark needs |
| + | - name: 'check prose' |
| run: | | |
| - | cat <<JSON > ~/.proselintrc.json |
| + | cat <<JSON > ~/.proselintrc-base.json |
| { | |
| "checks": { | |
| "annotations.misc": false, | |
| "lexical_illusions": false, | |
| + | "misc.annotations": false, |
| + | "redundancy.misc.garner": false, |
| + | "security.password": false, |
| + | "spelling.ve_of": false, |
| "typography.diacritical_marks": false, | |
| - | "typography.punctuation.exclamation": false, |
| "typography.symbols": false | |
| } | |
| } | |
| JSON | |
| source ~/venv/bin/activate | |
| - | proselint check docs/internals/CHECKSRC.md docs/libcurl/opts/CURLOPT_INTERFACE.md docs/cmdline-opts/interface.md |
| + | git ls-files README '*.md' -z | grep -Evz '(CHECKSRC|DISTROS|CURLOPT_INTERFACE|interface)\.md' | xargs -0 proselint check --config ~/.proselintrc-base.json -- |
| pyspelling: | |
| name: 'pyspelling' | |
| @@ -101,6 +106,7 @@ jobs: | |
| persist-credentials: false | |
| - name: 'trim all *.md files in docs/' | |
| + | background: true |
| run: .github/scripts/cleancmd.pl 'docs/*.md' | |
| - name: 'install' | |
| @@ -113,6 +119,9 @@ jobs: | |
| python3 -m venv ~/venv | |
| ~/venv/bin/pip --disable-pip-version-check --no-input --no-cache-dir install --progress-bar off --prefer-binary -r .github/scripts/requirements-docs.txt | |
| + | - name: 'trim all *.md files in docs/' |
| + | wait-all: |
| + | |
| - name: 'check spelling' | |
| run: | | |
| source ~/venv/bin/activate | |
| @@ -131,9 +140,11 @@ jobs: | |
| persist-credentials: false | |
| - name: 'verify synopsis' | |
| + | background: true |
| run: .github/scripts/verify-synopsis.pl docs/libcurl/curl*.md | |
| - name: 'verify examples (gcc)' | |
| + | background: true |
| run: | | |
| cmake -B bld-gcc -G Ninja -D_CURL_PREFILL=ON -DCURL_USE_LIBPSL=OFF -DCURL_WERROR=ON -D_CURL_SAVE_PICKY_OPTIONS=ON | |
| export CFLAGS; CFLAGS="$(cat bld-gcc/picky-options.txt)" | |
| @@ -55,6 +55,23 @@ jobs: | |
| with: | |
| persist-credentials: false | |
| + | - name: 'cmake options in documentation' |
| + | background: true |
| + | run: scripts/cmakeopts.sh |
| + | |
| + | - name: 'labelercheck' |
| + | background: true |
| + | run: .github/scripts/labelercheck.sh |
| + | |
| + | - name: 'perlcheck' |
| + | background: true |
| + | run: scripts/perlcheck.sh |
| + | |
| + | - name: 'install prereqs (typos)' |
| + | background: true |
| + | timeout-minutes: 2 |
| + | run: /home/linuxbrew/.linuxbrew/bin/brew install typos-cli |
| + | |
| - name: 'install prereqs' | |
| run: | | |
| python3 -m venv ~/venv | |
| @@ -64,53 +81,50 @@ jobs: | |
| -r tests/requirements.txt | |
| - name: 'REUSE check' | |
| + | background: true |
| run: | | |
| source ~/venv/bin/activate | |
| reuse lint | |
| - name: 'cmakelint' | |
| + | background: true |
| run: | | |
| source ~/venv/bin/activate | |
| scripts/cmakelint.sh | |
| - | - name: 'cmake options in documentation' |
| - | run: scripts/cmakeopts.sh |
| - | |
| - | - name: 'labelercheck' |
| - | run: .github/scripts/labelercheck.sh |
| - | |
| - | - name: 'perlcheck' |
| - | run: scripts/perlcheck.sh |
| - | |
| - name: 'ruff' | |
| + | background: true |
| run: | | |
| source ~/venv/bin/activate | |
| scripts/pythonlint.sh | |
| - name: 'pyrefly' | |
| + | background: true |
| run: | | |
| source ~/venv/bin/activate | |
| cd tests/http/ | |
| pyrefly check --python-version=3.8 --preset=basic --check-unannotated-defs --summary | |
| + | - name: 'wait-all' |
| + | wait-all: |
| + | |
| - name: filter off code from all C and H files | |
| run: | | |
| - | git ls-files -z '**.[ch]' | xargs -0 -r -n1 ./.github/scripts/c-strip |
| - | |
| - | - name: 'codespell' |
| - | run: | |
| - | source ~/venv/bin/activate |
| - | codespell --version |
| - | .github/scripts/codespell.sh |
| + | git ls-files -z '**.[ch]' | xargs -0 -r -n1 .github/scripts/c-strip |
| - name: 'typos' | |
| - | timeout-minutes: 2 |
| + | background: true |
| run: | | |
| - | /home/linuxbrew/.linuxbrew/bin/brew install typos-cli |
| eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
| typos --version | |
| .github/scripts/typos.sh | |
| + | - name: 'codespell' |
| + | run: | |
| + | source ~/venv/bin/activate |
| + | codespell --version |
| + | .github/scripts/codespell.sh |
| + | |
| pytype: | |
| name: 'pytype' | |
| runs-on: ubuntu-24.04-arm # pytype is discontinued and requires python 3.8-3.12 | |
| @@ -194,6 +208,7 @@ jobs: | |
| run: sed -i.bak -E 's/shell\x3a .+ zizmor\x3a ignore.+$/shell\x3a bash/g' .github/workflows/*.yml | |
| - name: 'zizmor GHA' | |
| + | background: true |
| env: | |
| GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | |
| run: | | |
| @@ -201,6 +216,7 @@ jobs: | |
| zizmor --persona pedantic .github/workflows/*.yml .github/dependabot.yml | |
| - name: 'zizmor GHA (auditor, warning-only)' | |
| + | background: true |
| env: | |
| GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}' | |
| run: | | |
| @@ -208,28 +224,40 @@ jobs: | |
| zizmor --persona auditor .github/workflows/*.yml .github/dependabot.yml || true | |
| - name: 'actionlint' | |
| + | background: true |
| run: | | |
| eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
| export SHELLCHECK_OPTS='--exclude=1090,1091,2086,2153 --enable=avoid-nullary-conditions,deprecate-which' | |
| actionlint --version | |
| - | actionlint --ignore matrix --ignore ubuntu-26.04 --ignore ubuntu-24.04-firewall .github/workflows/*.yml |
| + | actionlint --ignore matrix \ |
| + | --ignore ubuntu-26.04 \ |
| + | --ignore ubuntu-24.04-firewall \ |
| + | --ignore 'unexpected key "background"' \ |
| + | --ignore 'unexpected key "wait"' \ |
| + | --ignore 'unexpected key "wait-all"' \ |
| + | --ignore 'must run script with "run" section' \ |
| + | .github/workflows/*.yml |
| - name: 'shellcheck CI' | |
| + | background: true |
| run: | | |
| eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
| shellcheck --version | |
| .github/scripts/shellcheck-ci.sh | |
| - name: 'shellcheck' | |
| + | background: true |
| run: | | |
| eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" | |
| shellcheck --version | |
| .github/scripts/shellcheck.sh | |
| - name: 'spacecheck' | |
| + | background: true |
| run: scripts/spacecheck.pl | |
| - name: 'yamlcheck' | |
| + | background: true |
| run: .github/scripts/yamlcheck.sh | |
| - name: 'badwords' | |