ci: open the nightly PRs as the riseproject-dev github app #27
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 | |
| --- | |
| # SQLAlchemy is pure-Python with *optional* Cython speedups; PyPI ships a compiled | |
| # wheel per interpreter for every arch but riscv64. sdist -> bdist, inheriting | |
| # upstream's [tool.cibuildwheel] test config from the sdist (as build-apache-tvm-ffi.yml). | |
| # https://github.com/sqlalchemy/sqlalchemy/blob/rel_2_0_52/.github/workflows/create-wheels.yaml | |
| name: Build sqlalchemy wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/sqlalchemy.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-sqlalchemy.yml' | |
| - 'docs/packages/sqlalchemy.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-sqlalchemy.yml' | |
| - 'docs/packages/sqlalchemy.yaml' | |
| 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: sqlalchemy | |
| version: ${{ inputs.version }} | |
| build_sdist: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| name: Build sqlalchemy ${{ matrix.version }} sdist | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: read | |
| env: | |
| SQLALCHEMY_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Compute git tag | |
| id: tag | |
| # SQLAlchemy's tags are rel_X_Y_Z, not the PyPI version. | |
| run: echo "ref=rel_$(echo "$SQLALCHEMY_VERSION" | tr . _)" >> "$GITHUB_OUTPUT" | |
| - name: Checkout SQLAlchemy ${{ steps.tag.outputs.ref }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: sqlalchemy/sqlalchemy | |
| ref: ${{ steps.tag.outputs.ref }} | |
| persist-credentials: false | |
| - name: Install Python | |
| uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 | |
| with: | |
| python-version: '3.12' | |
| activate-environment: true | |
| enable-cache: false | |
| - name: Build sdist | |
| id: sdist | |
| run: | | |
| set -eux | |
| # Release branches keep tag_build=dev in setup.cfg -> wheels get a .dev0 | |
| # suffix; upstream strips it at release, so must we (CLAUDE.md gotcha 22). | |
| sed -i '/tag_build = dev/d' setup.cfg | |
| uv pip install build twine | |
| python -m build --sdist | |
| twine check dist/* | |
| - name: Upload sdist artifact | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: sqlalchemy-${{ env.SQLALCHEMY_VERSION }}-sdist | |
| path: dist/*.tar.gz | |
| if-no-files-found: error | |
| build_wheels: | |
| needs: [setup, build_sdist] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build sqlalchemy ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| permissions: | |
| contents: read | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # cyextension is a plain per-interpreter C ext (not abi3), so one wheel each. | |
| python: [cp312, cp313, cp314, cp314t] | |
| env: | |
| SQLALCHEMY_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Download sdist | |
| uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | |
| with: | |
| name: sqlalchemy-${{ env.SQLALCHEMY_VERSION }}-sdist | |
| path: dist/ | |
| - id: sdist_path | |
| run: echo "path=$(echo dist/*.tar.gz)" >> "$GITHUB_OUTPUT" | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| package-dir: ${{ steps.sdist_path.outputs.path }} | |
| env: | |
| CIBW_BUILD: ${{ matrix.python }}-manylinux_riscv64 | |
| CIBW_ARCHS: riscv64 # override pyproject's x86_64+aarch64 pin | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # Extensions are optional=; force the build to fail rather than silently | |
| # ship a mislabeled pure-Python wheel (CLAUDE.md gotcha 20). | |
| CIBW_ENVIRONMENT: REQUIRE_SQLALCHEMY_CEXT=1 | |
| # Upstream's test-command relies on `python -s` to import the built wheel | |
| # over the source tree, but -s doesn't reach xdist -n workers; the env var | |
| # does, so workers test the compiled wheel (CLAUDE.md gotcha 21). | |
| CIBW_TEST_ENVIRONMENT: PYTHONNOUSERSITE=1 | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: sqlalchemy-${{ env.SQLALCHEMY_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish sqlalchemy ${{ matrix.version }} | |
| needs: [setup, build_sdist, 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: sqlalchemy-${{ matrix.version }}-*-manylinux_riscv64 |