Repository navigation
docs: Update projects #93
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 | |
| --- | |
| # Based on upstream's own wheel builder (`python-linux` job): | |
| # https://github.com/ostrowr/jsoncompat/blob/v0.4.2/.github/workflows/ci.yml | |
| name: Build jsoncompat wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/jsoncompat.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-jsoncompat.yml' | |
| - 'docs/packages/jsoncompat.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-jsoncompat.yml' | |
| - 'docs/packages/jsoncompat.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: jsoncompat | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build jsoncompat ${{ matrix.version }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 120 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| version: ${{ fromJSON(needs.setup.outputs.versions) }} | |
| # pybindings/Cargo.toml enables no pyo3 abi3 feature, so upstream ships | |
| # one wheel per interpreter (matches its own `-i '3.12 3.13 3.14 3.14t | |
| # 3.15'` maturin-action invocation and PyPI's cp3xx-cp3xx tags). | |
| python: ["cp312", "cp313", "cp314", "cp314t", "cp315"] | |
| env: | |
| JSONCOMPAT_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout jsoncompat v${{ env.JSONCOMPAT_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: ostrowr/jsoncompat | |
| ref: v${{ env.JSONCOMPAT_VERSION }} | |
| persist-credentials: false | |
| - name: Stage the licence beside jsoncompat's pyproject.toml | |
| # maturin globs LICEN[CS]E* relative to the pyproject directory, which | |
| # is pybindings/ in this workspace -- the licence file lives at the | |
| # repo root instead (semantic-text-splitter/moyopy hit the same gap). | |
| run: cp LICENSE pybindings/ | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| package-dir: pybindings | |
| output-dir: wheelhouse/ | |
| only: ${{ matrix.python }}-manylinux_riscv64 | |
| env: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # jsoncompat 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 | |
| CIBW_ENVIRONMENT_LINUX: PATH="$PATH:$HOME/.cargo/bin" | |
| CIBW_TEST_COMMAND: >- | |
| python -c "import importlib.metadata as md, jsoncompat as jsc, jsoncompat._native as native; | |
| assert native.__file__.endswith('.so'), native.__file__; | |
| assert any(str(p).endswith('licenses/LICENSE') for p in md.files('jsoncompat')); | |
| schema = '{\"type\": \"string\", \"minLength\": 1}'; | |
| assert jsc.check_compat(schema, schema, jsc.Role.BOTH) is True; | |
| validator = jsc.validator_for(schema); | |
| assert validator.is_valid_json('\"hello\"') is True; | |
| assert validator.is_valid_json('42') is False; | |
| generator = jsc.generator_for(schema); | |
| assert validator.is_valid_json(generator.generate_value(depth=3)) is True" | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: jsoncompat-${{ env.JSONCOMPAT_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish jsoncompat ${{ 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: jsoncompat-${{ matrix.version }}-*-manylinux_riscv64 |