Build and upload to PyPI #34
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build and upload to PyPI | |
| # Build on every workflow_dispatch, branch push, tag push, and pull request change | |
| on: | |
| workflow_dispatch: | |
| pull_request: | |
| push: | |
| branches: | |
| - upload_testpypi | |
| # Sequence of patterns matched against refs/tags | |
| tags: | |
| - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 | |
| jobs: | |
| build_wheels_windows_64: | |
| name: Build wheels on ${{ matrix.os }} 64-bit | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [windows-latest] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Build wheels | |
| uses: pypa/[email protected] | |
| env: | |
| CIBW_BUILD: "*-win_amd64" | |
| CIBW_SKIP: "cp38-*" | |
| - uses: actions/[email protected] | |
| with: | |
| name: ibmdb-wheels64-${{ matrix.os }} | |
| path: wheelhouse/*.whl | |
| build_wheels_windows_32: | |
| name: Build wheels on ${{ matrix.os }} 32-bit | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [windows-latest] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Build wheels | |
| uses: pypa/[email protected] | |
| env: | |
| CIBW_BUILD: "*-win32" | |
| CIBW_SKIP: "cp38-*" | |
| - uses: actions/[email protected] | |
| with: | |
| name: ibmdb-wheels32-${{ matrix.os }} | |
| path: wheelhouse/*.whl | |
| build_wheels_linux: | |
| name: Build wheels on ${{ matrix.os }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Build wheels | |
| uses: pypa/[email protected] | |
| env: | |
| CIBW_ARCHS_LINUX: "x86_64 i686" | |
| CIBW_MANYLINUX_I686_IMAGE: manylinux2014 | |
| CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 | |
| CIBW_SKIP: "cp38-* *-musllinux_* *-*linux_{aarch64,ppc64le}" | |
| CIBW_REPAIR_WHEEL_COMMAND_LINUX: | |
| auditwheel repair | |
| --exclude libdb2.so.1 | |
| --exclude libDB2xml4c.so.58 | |
| --exclude libm.so.6 | |
| --exclude libcrypt.so.1 | |
| --exclude libpam.so.0 | |
| --exclude librt.so.1 | |
| --exclude libpthread.so.0 | |
| --exclude libc.so.6 | |
| --exclude libdl.so.2 | |
| --wheel-dir {dest_dir} | |
| {wheel} | |
| - uses: actions/[email protected] | |
| with: | |
| name: ibmdb-wheels-${{ matrix.os }} | |
| path: wheelhouse/*.whl | |
| build_wheels_macos_arm64: | |
| name: Build wheels on macOS ARM64 | |
| runs-on: macos-latest | |
| strategy: | |
| matrix: | |
| architecture: [arm64] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Build wheels | |
| uses: pypa/[email protected] | |
| env: | |
| CIBW_SKIP: "cp38-*" | |
| MACOSX_DEPLOYMENT_TARGET: 14.0 | |
| - uses: actions/[email protected] | |
| with: | |
| name: ibmdb-wheelsarm64 | |
| path: wheelhouse/*.whl | |
| build_wheels_macos_x86: | |
| name: Build wheels for macOS x86_64 | |
| runs-on: macos-15-intel | |
| strategy: | |
| matrix: | |
| architecture: [x86_64] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Build wheels | |
| uses: pypa/[email protected] | |
| env: | |
| CIBW_ARCHS: "x86_64" | |
| CIBW_SKIP: "cp38-*" | |
| MACOSX_DEPLOYMENT_TARGET: 10.15 | |
| - uses: actions/[email protected] | |
| with: | |
| name: ibmdb-wheelsx86-${{ matrix.os }} | |
| path: wheelhouse/*.whl | |
| build_sdist: | |
| name: Build source distribution | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Install Python dependencies | |
| run: python -m pip install --upgrade pip build | |
| - name: Build sdist | |
| run: python -m build --sdist --no-isolation | |
| - name: Package version | |
| id: version | |
| run: | | |
| cd dist | |
| pip install ibm_db* | |
| echo "VERSION=$(python -c 'import ibm_db; print(ibm_db.__version__)')" >> $GITHUB_OUTPUT | |
| - name: Build source distribution | |
| run: | | |
| PACKAGE="ibm_db-$VERSION" | |
| cd dist | |
| tar -xzf $PACKAGE.tar.gz | |
| rm -rf $PACKAGE/clidriver* | |
| rm -rf $PACKAGE.tar.gz | |
| tar -czf $PACKAGE.tar.gz $PACKAGE | |
| rm -rf $PACKAGE | |
| env: | |
| VERSION: ${{ steps.version.outputs.VERSION}} | |
| - name: Upload sdist | |
| uses: actions/[email protected] | |
| with: | |
| name: ibmdb-sdist | |
| path: dist/*.tar.gz | |
| upload_pypi: | |
| needs: [build_wheels_windows_64, build_wheels_windows_32, build_wheels_linux, build_wheels_macos_arm64, build_wheels_macos_x86, build_sdist] | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest] | |
| permissions: | |
| # IMPORTANT: this permission is mandatory for trusted publishing | |
| id-token: write | |
| #upload to PyPI on every tag starting with 'v' | |
| #if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v') | |
| if: github.event_name == 'workflow_dispatch' | |
| steps: | |
| - uses: actions/download-artifact@v5 | |
| with: | |
| path: dist | |
| pattern: ibmdb-* | |
| merge-multiple: true | |
| # Upload to TestPyPI | |
| - name: Publish distribution to TestPyPI | |
| if: github.event_name == 'workflow_dispatch' | |
| uses: pypa/gh-action-pypi-publish@release/v1.12 | |
| with: | |
| repository-url: https://test.pypi.org/legacy/ | |
| user: __token__ | |
| password: ${{ secrets.TEST_PYPI_API_TOKEN }} |