diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml new file mode 100644 index 0000000..bcc21b6 --- /dev/null +++ b/.github/workflows/actions.yml @@ -0,0 +1,80 @@ +name: "Test and deploy" +on: + push: + branches: + - main + - development + - deploy + pull_request: + +permissions: + contents: read + pull-requests: read + +jobs: + develop-matrix: + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-latest] + python: ['3.9', '3.10', '3.11', '3.12'] + runs-on: ${{ matrix.os }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python }} + + - name: Install lib + run: | + pip install --upgrade pip + pip install -e . + + - name: Build wheel + run: | + pip install setuptools + pip install wheel + python setup.py bdist_wheel + + - name: Archive build artifacts + uses: actions/upload-artifact@v4 + with: + name: build-artifacts-${{ matrix.os }}-${{ matrix.python }} + path: dist + + deploy: + runs-on: ubuntu-latest + needs: develop-matrix + if: github.event_name == 'release' && github.event.action == 'created' + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + + - name: Install twine + run: | + pip install --upgrade pip + pip install twine + + - name: Download build artifacts + uses: actions/download-artifact@v4 + with: + path: dist + merge-multiple: true + + - name: Inspect dist files + run: | + ls -R dist + + - name: Upload to PyPI using twine + run: | + twine upload --skip-existing dist/* + env: + TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }} + TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} diff --git a/.gitignore b/.gitignore index f3b2152..cc4158f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ __pycache__/ # Distribution / packaging .Python env/ +.venv/ build/ develop-eggs/ dist/