name: Test & publish on: push: branches: - master pull_request: release: types: [created] jobs: build: name: Python ${{ matrix.python-version }} / ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: max-parallel: 9 fail-fast: false matrix: python-version: [3.7, 3.8, 3.9] os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v1 - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v1 with: python-version: ${{ matrix.python-version }} - name: Install dependencies run: | python -m pip install --upgrade pip pip install poetry poetry install - name: Test with pytest run: | poetry run pytest --color=yes publish: name: Publish to PyPI runs-on: ubuntu-latest needs: build if: github.event_name == 'release' steps: - uses: actions/checkout@v1 - name: Set up Python uses: actions/setup-python@v1 with: python-version: '3.8' - name: Install dependencies run: | python -m pip install --upgrade pip pip install poetry - name: Build and publish env: PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} run: | poetry publish --build -u $PYPI_USERNAME -p $PYPI_PASSWORD