docs: Update projects #31
Workflow file for this run
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
| # SPDX-FileCopyrightText: 2026 The RISE Project | |
| # SPDX-License-Identifier: MIT | |
| --- | |
| # This workflow is based on: https://github.com/scylladb/python-driver/blob/master/.github/workflows/lib-build.yml | |
| name: Build scylla-driver wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/scylla-driver.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-scylla-driver.yml' | |
| - 'docs/packages/scylla-driver.yaml' | |
| - 'patches/scylla-driver/**' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-scylla-driver.yml' | |
| - 'docs/packages/scylla-driver.yaml' | |
| - 'patches/scylla-driver/**' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read # to fetch code (actions/checkout) | |
| env: | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| setup: | |
| uses: $/.github/workflows/_setup.yml | |
| with: | |
| package: scylla-driver | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build scylla-driver ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 240 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| python: | |
| - "cp312" | |
| - "cp313" | |
| - "cp314" | |
| - "cp314t" | |
| env: | |
| SCYLLA_DRIVER_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout scylla-driver ${{ env.SCYLLA_DRIVER_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: scylladb/python-driver | |
| ref: ${{ env.SCYLLA_DRIVER_VERSION }}-scylla | |
| persist-credentials: false | |
| - name: Checkout python-wheels | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| path: python-wheels | |
| persist-credentials: false | |
| # auditwheel bundles the image's libev (and, from 3.29.12, liblz4), whose notices the | |
| # wheel would otherwise drop. | |
| - name: Patch scylla-driver source | |
| run: git apply python-wheels/patches/scylla-driver/${{ env.SCYLLA_DRIVER_VERSION }}/00*.patch | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| only: ${{ matrix.python }}-manylinux_riscv64 | |
| env: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| CIBW_BUILD_FRONTEND: build # upstream's build[uv] needs a host uv the runner has none of (gotcha 13) | |
| # Upstream's before-build, minus the AlmaLinux key and the packages Rocky 10 preinstalls. | |
| # lz4-devel is for the cassandra.cython_lz4 extension 3.29.12 added. | |
| CIBW_BEFORE_BUILD: rm -rf ~/.pyxbld && yum install -y libev libev-devel lz4-devel | |
| # The three CASS_DRIVER/CFLAGS values are upstream's [tool.cibuildwheel] environment, | |
| # which this replaces; EXTENSIONS_ARE_MUST is what fails a degraded pure-Python build. | |
| CIBW_ENVIRONMENT: >- | |
| CASS_DRIVER_BUILD_CONCURRENCY=2 | |
| CASS_DRIVER_BUILD_EXTENSIONS_ARE_MUST=yes | |
| CFLAGS='-g0 -O3' | |
| PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| # Upstream's dev group, minus ccm (a git dependency only the integration tests use) | |
| # and minus gevent on cp314t, which it has no build for. setuptools is what gives | |
| # pyximport a distutils on 3.12+ (gotcha 211). jsonschema is imported at module | |
| # level by tests/unit/test_driver_config_schema.py from 3.29.12 on. | |
| CIBW_TEST_GROUPS: '' | |
| CIBW_TEST_REQUIRES: >- | |
| pytest~=8.0 PyYAML pure-sasl twisted[tls] eventlet>=0.33.3 cython>=3.2 | |
| packaging>=25.0 futurist numpy objgraph setuptools jsonschema>=4.18 | |
| ${{ matrix.python == 'cp314t' && '' || 'gevent' }} | |
| # PIP_PREFER_BINARY keeps pip on our registry's gevent instead of compiling | |
| # PyPI's newer release. | |
| CIBW_TEST_ENVIRONMENT: PIP_PREFER_BINARY=1 | |
| # cassandra/ would shadow the installed wheel, so only the two .pyx files | |
| # tests/unit/cython/types_testhelper.pyx includes by relative path are staged. | |
| CIBW_TEST_SOURCES: tests cassandra/ioutils.pyx cassandra/cython_marshal.pyx | |
| # 3.29.12 dropped the gevent reactor and its test file, so that run is skipped | |
| # when the file is absent. | |
| CIBW_TEST_COMMAND: >- | |
| python -c "import importlib.metadata as m; f=[str(p) for p in m.files('scylla-driver')]; assert any(s.endswith('licenses/LICENSE.libev') for s in f), f; assert not any('/liblz4' in s for s in f) or any(s.endswith('licenses/LICENSE.lz4') for s in f), f" && | |
| python -m pytest tests/unit | |
| ${{ matrix.python == 'cp314t' && '' || '&& { [ ! -f tests/unit/io/test_geventreactor.py ] || EVENT_LOOP_MANAGER=gevent python -m pytest tests/unit/io/test_geventreactor.py; }' }} | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: scylla-driver-${{ env.SCYLLA_DRIVER_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish scylla-driver ${{ matrix.version }} | |
| needs: [setup, build_wheels] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| uses: $/.github/workflows/_publish-wheel.yml | |
| secrets: | |
| app-private-key: ${{ secrets.RISEPROJECT_APP_PRIVATE_KEY }} | |
| with: | |
| artifact-pattern: scylla-driver-${{ matrix.version }}-*-manylinux_riscv64 |