docs: Update projects #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
| # SPDX-FileCopyrightText: 2026 The RISE Project | |
| # SPDX-License-Identifier: MIT | |
| --- | |
| # This workflow is based on: https://github.com/python-grimp/grimp/blob/v3.15/.github/workflows/release.yml | |
| name: Build grimp wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/grimp.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-grimp.yml' | |
| - 'docs/packages/grimp.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-grimp.yml' | |
| - 'docs/packages/grimp.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: grimp | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build grimp ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 90 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # PyO3 extension built per-interpreter (upstream ships cp3x-cp3x wheels, | |
| # no abi3), including a free-threaded cp314t wheel. | |
| python: ["cp312", "cp313", "cp314", "cp314t"] | |
| env: | |
| GRIMP_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout grimp ${{ env.GRIMP_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: python-grimp/grimp | |
| ref: v${{ env.GRIMP_VERSION }} | |
| persist-credentials: false | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| # musllinux is dropped: rustup.rs ships no riscv64 musl toolchain. | |
| only: ${{ matrix.python }}-manylinux_riscv64 | |
| env: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # grimp ships no [tool.cibuildwheel], so the Rust toolchain its maturin | |
| # backend needs is installed in-container here. | |
| CIBW_BEFORE_ALL_LINUX: >- | |
| curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y | |
| # PIP_EXTRA_INDEX_URL resolves the riscv64 PyYAML wheel from our registry | |
| # (PyYAML ships no py3-none-any wheel). | |
| CIBW_ENVIRONMENT_LINUX: >- | |
| PATH="$PATH:$HOME/.cargo/bin" | |
| PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| # Upstream's `just test-python` is `pytest --benchmark-skip` against the | |
| # dev dependency group; the pinned third-party packages are the ones its | |
| # snapshot tests build graphs from, so their versions are load-bearing. | |
| CIBW_TEST_REQUIRES: >- | |
| pytest pytest-benchmark syrupy pyyaml | |
| Django==4.2.17 flask==3.0.3 requests==2.32.3 sqlalchemy==2.0.35 | |
| google-cloud-audit-log==0.3.0 | |
| CIBW_TEST_SOURCES: tests pyproject.toml | |
| CIBW_TEST_COMMAND: python -m pytest --benchmark-skip | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: grimp-${{ env.GRIMP_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish grimp ${{ 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 | |
| with: | |
| artifact-pattern: grimp-${{ matrix.version }}-*-manylinux_riscv64 |