name: Build
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- "main"
|
|
tags:
|
|
- "v*"
|
|
|
|
jobs:
|
|
black:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: Black Check
|
|
uses: jpetrucciani/black-check@20.8b1
|
|
|
|
mypy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: "3.9"
|
|
- run: pip install "poetry~=1.1.4"
|
|
- run: poetry config experimental.new-installer false
|
|
name: Disable new installer
|
|
- run: poetry install
|
|
- run: poetry run mypy --py2 sysaudit/ tests/
|
|
name: Mypy Check Python2
|
|
- run: poetry run mypy sysaudit/ tests/
|
|
name: Mypy Check Python3
|
|
|
|
bandit:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: "3.9"
|
|
- run: pip install "poetry~=1.1.4"
|
|
- run: poetry config experimental.new-installer false
|
|
name: Disable new installer
|
|
- run: poetry install
|
|
- run: poetry run bandit -r sysaudit/
|
|
name: Bandit check
|
|
|
|
vulture:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: "3.9"
|
|
- run: pip install "poetry~=1.1.4"
|
|
- run: poetry config experimental.new-installer false
|
|
name: Disable new installer
|
|
- run: poetry install
|
|
- run: poetry run vulture sysaudit/ tests/
|
|
name: Vulture check
|
|
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9"]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- run: pip install "poetry~=1.1.4"
|
|
- run: poetry config experimental.new-installer false
|
|
name: Disable new installer
|
|
- run: poetry check
|
|
- run: poetry install
|
|
- run: poetry run pytest tests/
|
|
|
|
docs:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: "3.9"
|
|
- run: pip install "poetry~=1.1.4"
|
|
- run: poetry config experimental.new-installer false
|
|
name: Disable new installer
|
|
- run: poetry install
|
|
- run: poetry run sphinx-build -a -W -n -E docs/ docs/_build
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: docs
|
|
path: ./docs/_build/
|
|
|
|
build_wheels:
|
|
name: Build wheels on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macOS-latest]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
- name: Install cibuildwheel
|
|
run: python -m pip install cibuildwheel~=1.9.0
|
|
- name: Build wheels
|
|
run: python -m cibuildwheel --output-dir wheelhouse
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: wheelhouse
|
|
path: ./wheelhouse/*.whl
|
|
|
|
build_sdist:
|
|
name: Build sdist
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: 3.9
|
|
- run: pip install "poetry~=1.1.4"
|
|
- run: poetry config experimental.new-installer false
|
|
name: Disable new installer
|
|
- run: poetry check
|
|
- run: poetry install
|
|
- run: poetry build --format sdist
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: wheelhouse
|
|
path: ./dist/*.tar.gz
|
|
|
|
test_install:
|
|
name: Test install on ${{ matrix.os }} / ${{ matrix.python-version }}
|
|
needs: [black, mypy, bandit, vulture, docs, test, build_wheels, build_sdist]
|
|
runs-on: ${{ matrix.os }}
|
|
strategy:
|
|
matrix:
|
|
os: [ubuntu-latest, macOS-latest]
|
|
python-version: ["2.7", "3.5", "3.6", "3.7", "3.8", "3.9", "pypy-2.7", "pypy-3.6", "pypy-3.7"]
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: actions/setup-python@v2
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
- uses: actions/download-artifact@v4.1.7
|
|
with:
|
|
name: wheelhouse
|
|
path: dist
|
|
- run: pip install --no-index --find-links=./dist sysaudit
|
|
name: Install sysaudit from wheels
|
|
- run: python -c "import sysaudit; sysaudit.audit('event')"
|
|
name: Check module is importable
|
|
|
|
upload_pypi:
|
|
needs: [test_install]
|
|
runs-on: ubuntu-latest
|
|
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
|
steps:
|
|
- uses: actions/download-artifact@v4.1.7
|
|
with:
|
|
name: wheelhouse
|
|
path: dist
|
|
|
|
- uses: pypa/gh-action-pypi-publish@master
|
|
with:
|
|
user: __token__
|
|
password: ${{ secrets.PYPI_TOKEN }}
|
|
# To test: repository_url: https://test.pypi.org/legacy/
|