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 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, 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@v2 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@v2 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/