Files
cvat-ai--cvat/.github/workflows/linters.yml
T
2026-07-13 13:32:23 +08:00

190 lines
5.3 KiB
YAML

name: linters
on: pull_request
jobs:
bandit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Run checks
run: |
pipx install $(grep "^bandit" ./dev/requirements.txt)
echo "Bandit version: "$(bandit --version | head -1)
bandit -a file --ini .bandit --recursive .
black:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Run checks
run: |
pipx install $(grep "^black" ./dev/requirements.txt)
echo "Black version: $(black --version)"
black --check --diff .
hadolint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Run checks
env:
HADOLINT: '${{ github.workspace }}/hadolint'
HADOLINT_VER: 2.12.0
VERIFICATION_LEVEL: error
run: |
curl -sLo "$HADOLINT" "https://github.com/hadolint/hadolint/releases/download/v$HADOLINT_VER/hadolint-Linux-x86_64"
chmod +x "$HADOLINT"
echo "hadolint version: $("$HADOLINT" --version)"
git ls-files -z 'Dockerfile*' '*/Dockerfile*' | xargs -0 "$HADOLINT" -t "$VERIFICATION_LEVEL"
isort:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Run checks
run: |
pipx install $(grep "^isort" ./dev/requirements.txt)
echo "isort version: $(isort --version-number)"
isort --check --diff --resolve-all-configs .
pylint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- id: setup-pipx
shell: bash
run: |
# custom cached dir
cache_home_dir="$HOME/.local/pipx"
cache_bin_dir="$HOME/.local/pipx_bin"
# add cached dir to PATH
echo "$cache_bin_dir" >> $GITHUB_PATH
echo "cache_home_dir=$cache_home_dir" >> $GITHUB_OUTPUT
echo "cache_bin_dir=$cache_bin_dir" >> $GITHUB_OUTPUT
echo "version=$(pipx --version)" >> $GITHUB_OUTPUT
echo "python_version=$(python3 --version)" >> $GITHUB_OUTPUT
- id: cache-pipx
uses: actions/cache@v6
with:
path: |
${{ steps.setup-pipx.outputs.cache_home_dir }}
${{ steps.setup-pipx.outputs.cache_bin_dir }}
# cache based on pipx version, python version, and both requirements files
# nb! we need to keep python version in the key because packages might be not compatible between python versions
key: pipx-pylint-${{ steps.setup-pipx.outputs.version}}-${{ steps.setup-pipx.outputs.python_version}}-${{ hashFiles('./dev/requirements.txt', './cvat/requirements/base.txt') }}
- name: Install pylint
if: steps.cache-pipx.outputs.cache-hit != 'true'
shell: bash
env:
# nb! install in our custom cached dir, using /opt will not work because of permission issues
PIPX_HOME: ${{ steps.setup-pipx.outputs.cache_home_dir }}
PIPX_BIN_DIR: ${{ steps.setup-pipx.outputs.cache_bin_dir }}
run: |
pipx install $(grep "^pylint==" ./dev/requirements.txt)
pipx inject pylint \
$(grep "^pylint-.\+==" ./dev/requirements.txt) \
$(grep "^django==" ./cvat/requirements/base.txt)
- name: Run checks
run: |
echo "Pylint version: "$(pylint --version | head -1)
pylint -j0 .
regal:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Setup Regal
uses: open-policy-agent/setup-regal@761188c3b435761fa254beca508a44875619648f # v2.0.0
with:
version: v0.21.3
- run: regal lint --format=github cvat/apps/*/rules
spellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Run checks
run: |
pipx install $(grep "^typos==" ./dev/requirements.txt)
echo "Typos version: $(typos --version )"
typos
eslint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup-yarn
with:
node-version: 22.x
node-modules-path: |
node_modules
tests/node_modules
install-command: |
yarn install --immutable
(cd tests && yarn install --immutable)
- name: Run checks
run: |
echo "ESLint version: "$(yarn run eslint --version)
yarn run eslint .
typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup-yarn
with:
node-version: 22.x
- name: Run TypeScript checks for cvat frontend code
run: yarn run type-check
remark:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup-yarn
with:
node-version: 22.x
- name: Run checks
run: |
echo "Remark version: "`npx remark --version`
npx remark --quiet --frail -i .remarkignore .
stylelint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: ./.github/actions/setup-yarn
with:
node-version: 22.x
- name: Run checks
run: |
echo "StyleLint version: "$(yarn run stylelint --version)
yarn run stylelint '**/*.css' '**/*.scss'