Build and upload to PyPI #2
This file contains 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: | |
- master | |
# 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/[email protected] | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: "*-win_amd64" | |
CIBW_SKIP: "cp36-* pp*" | |
- 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/[email protected] | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_BUILD: "*-win32" | |
CIBW_SKIP: "cp36-* pp*" | |
- 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/[email protected] | |
- name: Build wheels | |
uses: pypa/[email protected] | |
env: | |
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 | |
CIBW_SKIP: "cp36-* *-musllinux_* pp* *-*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_macos_arm64_wheels: | |
name: Build wheels on macOS ARM64 | |
runs-on: macos-14 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.12' | |
- name: Set macOS deployment target | |
run: echo "MACOSX_DEPLOYMENT_TARGET=14.0" >> $GITHUB_ENV | |
- name: Install build dependencies | |
run: | | |
pip install --upgrade pip | |
pip install cibuildwheel delocate build | |
- name: Build the wheel for macOS | |
env: | |
CIBW_SKIP: "cp36-* cp37-* cp38-* pp3*" | |
CIBW_ARCHS_MACOS: "arm64" | |
run: | | |
cibuildwheel --platform macos --output-dir dist | |
- name: Upload sdist | |
uses: actions/[email protected] | |
with: | |
name: ibmdb-wheelsarm64 | |
path: dist/*.whl | |
build_wheels_macos_x86: | |
name: Build wheels for macOS x86_64 | |
runs-on: macos-13 | |
strategy: | |
matrix: | |
architecture: [x86_64] | |
steps: | |
- uses: actions/[email protected] | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install cibuildwheel # Install cibuildwheel to build the wheels | |
- name: Set macOS deployment target | |
run: echo "MACOSX_DEPLOYMENT_TARGET=10.15" >> $GITHUB_ENV | |
- name: Build wheels with cibuildwheel | |
run: | | |
CIBW_ARCHS_MACOS="${{ matrix.architecture }}" | |
python -m cibuildwheel --platform macos --output-dir ./wheelhouse | |
- name: Upload wheels as artifacts | |
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/[email protected] | |
- 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_sdist,build_wheels_linux, build_wheels_windows_64,build_wheels_windows_32, build_macos_arm64_wheels, build_wheels_macos_x86] | |
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' | |
steps: | |
- uses: actions/[email protected] | |
with: | |
path: dist | |
pattern: ibmdb-* | |
merge-multiple: true | |
- name: Publish to TestPyPI | |
uses: pypa/gh-action-pypi-publish@release/v1.12 | |
with: | |
repository_url: https://test.pypi.org/legacy/ | |
password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |