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