diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..24139993 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,76 @@ +name: "Deploy Python Lib" +on: + release: + types: + - created + +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 + 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 }}