mirror of
https://github.com/curl/curl.git
synced 2026-07-11 00:17:16 +03:00
pytype is discontinued, does not receive further updates, and it requires older python, offered by Ubuntu 24.04 or older. Move it to its own GHA job to allow bumping the rest of checkers to. newer runner images. Also move it out from the shared `requirements.txt` and install directly from its separate GHA job, to avoid installing it unnecessarily from others. Since it does not receive update, it's fine to move out from Dependabot's view. Ref: https://pypi.org/project/pytype/ Cherry-picked from #22092 Closes #22096
214 lines
6.2 KiB
YAML
214 lines
6.2 KiB
YAML
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
|
|
#
|
|
# SPDX-License-Identifier: curl
|
|
|
|
# This workflow contains checks at the source code level only.
|
|
|
|
name: 'Source'
|
|
|
|
'on':
|
|
push:
|
|
branches:
|
|
- master
|
|
- '*/ci'
|
|
paths-ignore:
|
|
- '.circleci/**'
|
|
- 'appveyor.*'
|
|
- 'Dockerfile'
|
|
pull_request:
|
|
branches:
|
|
- master
|
|
paths-ignore:
|
|
- '.circleci/**'
|
|
- 'appveyor.*'
|
|
- 'Dockerfile'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
|
|
cancel-in-progress: true
|
|
|
|
permissions: {}
|
|
|
|
env:
|
|
DO_NOT_TRACK: '1'
|
|
|
|
jobs:
|
|
checksrc:
|
|
name: 'checksrc'
|
|
runs-on: ubuntu-slim
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: 'check'
|
|
run: scripts/checksrc-all.pl
|
|
|
|
linters:
|
|
name: 'spellcheck, linters, REUSE'
|
|
runs-on: ubuntu-24.04-arm
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- 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.txt \
|
|
-r tests/http/requirements.txt \
|
|
-r tests/requirements.txt
|
|
|
|
- name: 'REUSE check'
|
|
run: |
|
|
source ~/venv/bin/activate
|
|
reuse lint
|
|
|
|
- name: 'codespell'
|
|
run: |
|
|
source ~/venv/bin/activate
|
|
codespell --version
|
|
.github/scripts/codespell.sh
|
|
|
|
- name: 'typos'
|
|
timeout-minutes: 2
|
|
run: |
|
|
/home/linuxbrew/.linuxbrew/bin/brew install typos-cli
|
|
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
|
typos --version
|
|
.github/scripts/typos.sh
|
|
|
|
- name: 'cmakelint'
|
|
run: |
|
|
source ~/venv/bin/activate
|
|
scripts/cmakelint.sh
|
|
|
|
- name: 'perlcheck'
|
|
run: |
|
|
scripts/perlcheck.sh
|
|
|
|
- name: 'ruff'
|
|
run: |
|
|
source ~/venv/bin/activate
|
|
scripts/pythonlint.sh
|
|
|
|
pytype:
|
|
name: 'pytype'
|
|
runs-on: ubuntu-24.04-arm # pytype is discontinued and requires python 3.8-3.12
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- 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 pytype==2024.10.11 \
|
|
-r .github/scripts/requirements.txt \
|
|
-r tests/http/requirements.txt \
|
|
-r tests/requirements.txt
|
|
|
|
- name: 'check'
|
|
run: |
|
|
source ~/venv/bin/activate
|
|
find . -name '*.py' -exec pytype -j auto -k -- {} +
|
|
|
|
complexity:
|
|
name: 'complexity and function sizes'
|
|
runs-on: ubuntu-slim
|
|
timeout-minutes: 3
|
|
steps:
|
|
- name: 'install pmccabe'
|
|
timeout-minutes: 2
|
|
run: |
|
|
ls -l /etc/apt/sources.list.d
|
|
sudo find /etc/apt/sources.list.d -type f -not -name 'ubuntu.sources' -delete -print
|
|
sudo sed -i 's/priority:1/priority:9/' /etc/apt/apt-mirrors.txt; cat /etc/apt/apt-mirrors.txt
|
|
sudo apt-get -o Dpkg::Use-Pty=0 update
|
|
sudo apt-get -o Dpkg::Use-Pty=0 install pmccabe
|
|
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: 'check function complexity'
|
|
run: ./scripts/top-complexity
|
|
|
|
- name: 'check function lengths'
|
|
run: ./scripts/top-length
|
|
|
|
xmllint:
|
|
name: 'xmllint'
|
|
runs-on: ubuntu-slim
|
|
timeout-minutes: 3
|
|
steps:
|
|
- name: 'install prereqs'
|
|
timeout-minutes: 2
|
|
run: |
|
|
sudo find /etc/apt/sources.list.d -type f -not -name 'ubuntu.sources' -delete -print
|
|
sudo sed -i 's/priority:1/priority:9/' /etc/apt/apt-mirrors.txt; cat /etc/apt/apt-mirrors.txt
|
|
sudo apt-get -o Dpkg::Use-Pty=0 update
|
|
sudo apt-get -o Dpkg::Use-Pty=0 install libxml2-utils
|
|
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: 'check'
|
|
run: git grep -z -i -l -E '^<\?xml' | xargs -0 -r xmllint --output /dev/null
|
|
|
|
miscchecks:
|
|
name: 'misc checks'
|
|
runs-on: ubuntu-24.04-arm
|
|
timeout-minutes: 5
|
|
steps:
|
|
- name: 'install prereqs'
|
|
timeout-minutes: 2
|
|
run: /home/linuxbrew/.linuxbrew/bin/brew install actionlint shellcheck zizmor
|
|
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: 'zizmor GHA'
|
|
env:
|
|
GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
|
|
run: |
|
|
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
|
zizmor --persona pedantic .github/workflows/*.yml .github/dependabot.yml
|
|
|
|
- name: 'zizmor GHA (auditor, warning-only)'
|
|
env:
|
|
GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
|
|
run: |
|
|
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
|
zizmor --persona auditor .github/workflows/*.yml .github/dependabot.yml || true
|
|
|
|
- name: 'actionlint'
|
|
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 .github/workflows/*.yml
|
|
|
|
- name: 'shellcheck CI'
|
|
run: |
|
|
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
|
shellcheck --version
|
|
.github/scripts/shellcheck-ci.sh
|
|
|
|
- name: 'shellcheck'
|
|
run: |
|
|
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
|
shellcheck --version
|
|
.github/scripts/shellcheck.sh
|
|
|
|
- name: 'spacecheck'
|
|
run: scripts/spacecheck.pl
|
|
|
|
- name: 'yamlcheck'
|
|
run: .github/scripts/yamlcheck.sh
|
|
|
|
- name: 'badwords'
|
|
run: scripts/badwords-all
|