mirror of
https://github.com/shadow-maint/shadow.git
synced 2026-01-27 14:24:12 +00:00
Add flake8, pycodestyle, isort, black and mypy in CI for Python linting. Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
105 lines
2.6 KiB
YAML
105 lines
2.6 KiB
YAML
name: "Static code analysis"
|
|
on:
|
|
push:
|
|
branches: [master]
|
|
pull_request:
|
|
branches: [master]
|
|
schedule:
|
|
# Everyday at midnight
|
|
- cron: '0 0 * * *'
|
|
jobs:
|
|
codeql:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
security-events: write
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Install dependencies
|
|
id: dependencies
|
|
uses: ./.github/actions/install-dependencies
|
|
|
|
- name: Initialize CodeQL
|
|
uses: github/codeql-action/init@v2
|
|
with:
|
|
languages: cpp
|
|
queries: +security-and-quality
|
|
|
|
- name: Configure shadow-utils
|
|
run: ./autogen.sh --without-selinux --disable-man
|
|
|
|
- name: Build shadow-utils
|
|
run: |
|
|
PROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN)
|
|
make -Orecurse -j$PROCESSORS
|
|
|
|
- name: Perform CodeQL Analysis
|
|
uses: github/codeql-action/analyze@v2
|
|
|
|
differential-shellcheck:
|
|
runs-on: ubuntu-latest
|
|
|
|
permissions:
|
|
contents: read
|
|
security-events: write
|
|
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
# Doc: https://github.com/redhat-plumbers-in-action/differential-shellcheck#usage
|
|
- name: Differential ShellCheck
|
|
uses: redhat-plumbers-in-action/differential-shellcheck@v3
|
|
with:
|
|
severity: warning
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
python-linter:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: read
|
|
steps:
|
|
- uses: actions/setup-python@v5
|
|
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Setup virtual environment
|
|
working-directory: ./tests/system
|
|
run: |
|
|
sudo apt-get update
|
|
|
|
pip3 install virtualenv
|
|
python3 -m venv .venv
|
|
source .venv/bin/activate
|
|
pip3 install -r ./requirements.txt
|
|
pip3 install flake8 pycodestyle isort mypy black
|
|
|
|
- name: flake8
|
|
if: always()
|
|
working-directory: ./tests/system
|
|
run: source .venv/bin/activate && flake8 .
|
|
|
|
- name: pycodestyle
|
|
if: always()
|
|
working-directory: ./tests/system
|
|
run: source .venv/bin/activate && pycodestyle .
|
|
|
|
- name: isort
|
|
if: always()
|
|
working-directory: ./tests/system
|
|
run: source .venv/bin/activate && isort --check-only .
|
|
|
|
- name: black
|
|
if: always()
|
|
working-directory: ./tests/system
|
|
run: source .venv/bin/activate && black --check --diff .
|
|
|
|
- name: mypy
|
|
if: always()
|
|
working-directory: ./tests/system
|
|
run: source .venv/bin/activate && mypy --install-types --non-interactive tests
|