Merge pull request #205 from benjeffery/update-ubuntu-2412 #143
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 test wheels | |
on: | |
push: | |
branches: | |
- main | |
- test | |
tags: | |
- '*' | |
release: | |
types: [published, created] | |
jobs: | |
windows: | |
runs-on: windows-latest | |
strategy: | |
matrix: | |
python: [3.9, "3.10", 3.11, 3.12] | |
wordsize: [64] | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Build wheel | |
env: | |
PYTHON: "py -${{ matrix.python }}-${{ matrix.wordsize }}" | |
shell: bash | |
run: | | |
set -ex | |
# Fix symlinks on windows | |
git config core.symlinks true | |
git reset --hard | |
cd python | |
${PYTHON} -VV | |
${PYTHON} -m pip install delocate build | |
${PYTHON} -m build --wheel | |
- name: Install wheel and run tests | |
env: | |
PYTHON: "py -${{ matrix.python }}-${{ matrix.wordsize }}" | |
shell: bash | |
run: | | |
set -ex | |
# We install in this odd way to make sure we get both deps and a local kastore | |
${PYTHON} -m pip install kastore --only-binary kastore -f python/dist/ | |
${PYTHON} -m pip uninstall -y kastore | |
${PYTHON} -m pip install -v kastore --only-binary kastore -f python/dist/ --no-index | |
${PYTHON} -c "import kastore" | |
${PYTHON} -m pip install -r python/requirements/CI/tests/requirements.txt | |
rm -rf python/kastore python/*.pyd | |
${PYTHON} -m pytest -v python | |
- name: Upload Wheels | |
uses: actions/[email protected] | |
with: | |
name: win-wheel-${{ matrix.python }}-${{ matrix.wordsize }} | |
path: python/dist | |
OSX-ARM: | |
runs-on: macos-14 | |
strategy: | |
matrix: | |
python: [3.9, "3.10", 3.11, 3.12] | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Set up Python ${{ matrix.python }} | |
uses: actions/[email protected] | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Build Wheel | |
run: | | |
cd python | |
python -m pip install build | |
python -m build --wheel | |
- name: Install wheel and run tests | |
run: | | |
# We install in this odd way to make sure we get both deps and a local kastore | |
pip install kastore --only-binary kastore -f python/dist/ | |
pip uninstall -y kastore | |
pip install -v kastore --only-binary kastore -f python/dist/ --no-index | |
python -c "import kastore" | |
pip install -r python/requirements/CI/tests/requirements.txt | |
rm -rf python/kastore python/*.so | |
python -m pytest -v python | |
- name: Upload Wheels | |
uses: actions/[email protected] | |
with: | |
name: osxarm-wheel-${{ matrix.python }} | |
path: python/dist | |
manylinux: | |
runs-on: ubuntu-24.04 | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
- name: Set up Python 3.9 | |
uses: actions/[email protected] | |
with: | |
python-version: 3.9 | |
- name: Build sdist | |
shell: bash | |
run: | | |
cd python | |
pip install build | |
python -m build --sdist | |
- name: Upload sdist | |
uses: actions/[email protected] | |
with: | |
name: sdist | |
path: python/dist | |
- name: Build wheels in docker | |
shell: bash | |
run: | | |
docker run --rm -v `pwd`:/project -w /project quay.io/pypa/manylinux2014_x86_64 bash docker/buildwheel.sh | |
- name: Set up Python 3.12 | |
uses: actions/[email protected] | |
with: | |
python-version: 3.12 | |
- name: Run tests (3.12) | |
run: | | |
python -VV | |
# We install in this odd way to make sure we get both deps and a local kastore | |
pip install kastore --only-binary kastore -f python/dist/wheelhouse | |
pip uninstall -y kastore | |
pip install -v kastore --only-binary kastore -f python/dist/wheelhouse --no-index | |
python -c "import kastore" | |
pip install -r python/requirements/CI/tests/requirements.txt | |
python -m pytest -v python | |
- name: Set up Python 3.12 | |
uses: actions/[email protected] | |
with: | |
python-version: 3.12 | |
- name: Run tests (3.11) | |
run: | | |
python -VV | |
# We install in this odd way to make sure we get both deps and a local kastore | |
pip install kastore --only-binary kastore -f python/dist/wheelhouse | |
pip uninstall -y kastore | |
pip install -v kastore --only-binary kastore -f python/dist/wheelhouse --no-index | |
python -c "import kastore" | |
pip install -r python/requirements/CI/tests/requirements.txt | |
python -m pytest -v python | |
- name: Set up Python 3.10 | |
uses: actions/[email protected] | |
with: | |
python-version: "3.10" | |
- name: Run tests (3.10) | |
run: | | |
python -VV | |
# We install in this odd way to make sure we get both deps and a local kastore | |
pip install kastore --only-binary kastore -f python/dist/wheelhouse | |
pip uninstall -y kastore | |
pip install -v kastore --only-binary kastore -f python/dist/wheelhouse --no-index | |
python -c "import kastore" | |
pip install -r python/requirements/CI/tests/requirements.txt | |
python -m pytest -v python | |
- name: Set up Python 3.9 | |
uses: actions/[email protected] | |
with: | |
python-version: 3.9 | |
- name: Run tests (3.9) | |
run: | | |
python -VV | |
# We install in this odd way to make sure we get both deps and a local kastore | |
pip install kastore --only-binary kastore -f python/dist/wheelhouse | |
pip uninstall -y kastore | |
pip install -v kastore --only-binary kastore -f python/dist/wheelhouse --no-index | |
python -c "import kastore" | |
pip install -r python/requirements/CI/tests/requirements.txt | |
python -m pytest -v python | |
- name: Upload Wheels | |
uses: actions/[email protected] | |
with: | |
name: linux-wheels | |
path: python/dist/wheelhouse | |
PyPI_Upload: | |
runs-on: ubuntu-24.04 | |
environment: release | |
needs: ['windows', 'OSX-ARM', 'manylinux'] | |
permissions: | |
id-token: write | |
steps: | |
- name: Download all | |
uses: actions/[email protected] | |
- name: Move to dist | |
run: | | |
mkdir dist | |
cp */*.{whl,gz} dist/. | |
- name: Publish distribution to Test PyPI | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags') && !contains(github.event.ref, 'C_') | |
uses: pypa/[email protected] | |
with: | |
repository_url: https://test.pypi.org/legacy/ | |
- name: Publish distribution to PRODUCTION PyPI | |
if: github.event_name == 'release' && !startsWith(github.event.release.tag_name, 'C_') | |
uses: pypa/[email protected] |