Repository navigation
ci: report per-job build status to the PR even for Trigger:
#3
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 wheel builder: | |
| # https://github.com/python-rapidjson/python-rapidjson/blob/master/.github/workflows/main.yml | |
| name: Build python-rapidjson wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'python-rapidjson version to build (git tag without leading v, e.g. 1.23)' | |
| required: true | |
| default: '1.23' | |
| pull_request: | |
| paths: | |
| - '.github/workflows/build-python-rapidjson.yml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ inputs.version || '1.23' }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: write # publish job pushes the docs branch | |
| pull-requests: write # publish job opens the docs PR | |
| statuses: write # set-commit-status posts build status to the PR | |
| actions: read # set-commit-status reads this run's job conclusions | |
| env: | |
| PYTHON_RAPIDJSON_VERSION: ${{ inputs.version || '1.23' }} | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| build_wheels: | |
| name: Build python-rapidjson ${{ inputs.version || '1.23' }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 120 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # No cp314t: upstream enables no free-threaded build and the extension | |
| # declares no Py_mod_gil slot, so such a wheel would re-enable the GIL. | |
| python: ["cp312", "cp313", "cp314"] | |
| steps: | |
| - name: Report status to the PR | |
| uses: riseproject-dev/python-wheels/actions/set-commit-status@main | |
| with: | |
| context: "${{ github.workflow }} / ${{ github.job }}${{ strategy.job-index && format(' / {0}', strategy.job-index) || '' }}" | |
| - name: Checkout python-rapidjson v${{ env.PYTHON_RAPIDJSON_VERSION }} | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| repository: python-rapidjson/python-rapidjson | |
| ref: v${{ env.PYTHON_RAPIDJSON_VERSION }} | |
| submodules: recursive | |
| persist-credentials: false | |
| # The extension compiles the bundled RapidJSON headers in, but the wheel ships | |
| # only python-rapidjson's own licence; setuptools globs LICEN[CS]E* at the root. | |
| - name: Stage the RapidJSON licence | |
| run: cp rapidjson/license.txt LICENSE.rapidjson | |
| - uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| env: | |
| CIBW_ARCHS: riscv64 | |
| CIBW_BUILD: ${{ matrix.python }}-manylinux_riscv64 | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| CIBW_TEST_REQUIRES: pytest pytest-benchmark pytz | |
| CIBW_TEST_COMMAND: >- | |
| python -c "import importlib.metadata as md; got = sorted(p.name for p in md.files('python-rapidjson') if '.dist-info/licenses/' in str(p) and p.name); assert got == ['LICENSE', 'LICENSE.rapidjson'], got" | |
| && pytest {project}/tests | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: python_rapidjson-${{ env.PYTHON_RAPIDJSON_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: ./wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish python-rapidjson ${{ inputs.version || '1.23' }} to GitLab | |
| needs: [build_wheels] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Report status to the PR | |
| uses: riseproject-dev/python-wheels/actions/set-commit-status@main | |
| with: | |
| context: "${{ github.workflow }} / ${{ github.job }}${{ strategy.job-index && format(' / {0}', strategy.job-index) || '' }}" | |
| - name: Publish wheels and open docs PR | |
| uses: riseproject-dev/python-wheels/actions/publish-wheels@main | |
| with: | |
| artifact-pattern: python_rapidjson-${{ env.PYTHON_RAPIDJSON_VERSION }}-*-manylinux_riscv64 | |
| gitlab-username: ${{ vars.GITLAB_DEPLOY_USER }} | |
| gitlab-token: ${{ secrets.GITLAB_DEPLOY_TOKEN }} | |
| gitlab-project-id: ${{ vars.GITLAB_PROJECT_ID }} | |
| gh-token: ${{ secrets.GITHUB_TOKEN }} |