ci: report per-job build status to the PR even for Trigger:
#5
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/zopefoundation/zope.interface/blob/8.6/.github/workflows/tests.yml | |
| name: Build zope-interface wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'zope.interface version to build (git tag, e.g. 8.6)' | |
| required: true | |
| default: '8.6' | |
| pull_request: | |
| paths: | |
| - '.github/workflows/build-zope-interface.yml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ inputs.version || '8.6' }}-${{ 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: | |
| ZOPE_INTERFACE_VERSION: ${{ inputs.version || '8.6' }} | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| build_wheels: | |
| name: Build zope-interface ${{ inputs.version || '8.6' }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| python: | |
| - "cp312" | |
| - "cp313" | |
| - "cp314" | |
| - "cp314t" | |
| 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 zope.interface ${{ env.ZOPE_INTERFACE_VERSION }} | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| repository: zopefoundation/zope.interface | |
| ref: ${{ env.ZOPE_INTERFACE_VERSION }} | |
| persist-credentials: false | |
| - 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_TEST_REQUIRES: zope.event zope.testing | |
| CIBW_TEST_ENVIRONMENT: ZOPE_INTERFACE_STRICT_IRO=1 | |
| # Upstream's two test steps. setup.py swallows extension build failures | |
| # (optional_build_ext), so PURE_PYTHON=0 — which makes the C import | |
| # mandatory at runtime — is what proves the wheel is not pure Python. | |
| CIBW_TEST_COMMAND: >- | |
| PURE_PYTHON=0 python -m unittest discover -s {package}/src/zope && | |
| PURE_PYTHON=1 python -m unittest discover -s {package}/src/zope | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: zope-interface-${{ env.ZOPE_INTERFACE_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish zope-interface ${{ inputs.version || '8.6' }} 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: zope-interface-${{ env.ZOPE_INTERFACE_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 }} |