Repository navigation
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 the `mypyc` job in: | |
| # https://github.com/psf/black/blob/26.5.1/.github/workflows/pypi_upload.yml | |
| # | |
| # black publishes mypyc-compiled wheels for common platforms but not riscv64. Its | |
| # committed [tool.cibuildwheel] config drives the whole build (hatch-mypyc hook | |
| # gated on HATCH_BUILD_HOOKS_ENABLE=1, CC=clang, the pytest suite), so we check out | |
| # the tag and inherit it, overriding only the riscv64 image. Setting CIBW_ENVIRONMENT | |
| # here would *replace* that table and silently drop the mypyc trigger — so we don't. | |
| name: Build black wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'black version to build (git tag, e.g. 26.5.1)' | |
| required: true | |
| default: '26.5.1' | |
| pull_request: | |
| paths: | |
| - '.github/workflows/build-black.yml' | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ inputs.version || '26.5.1' }}-${{ 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: | |
| # `inputs.version` is empty on pull_request events; default there. | |
| BLACK_VERSION: ${{ inputs.version || '26.5.1' }} | |
| MANYLINUX_RISCV64_IMAGE: quay.io/pypa/manylinux_2_39_riscv64 | |
| jobs: | |
| build_wheels: | |
| name: Build black ${{ inputs.version || '26.5.1' }} ${{ matrix.python }}-manylinux_riscv64 | |
| runs-on: ubuntu-24.04-riscv | |
| timeout-minutes: 120 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # mypyc emits per-interpreter (non-abi3) wheels; upstream skips free-threaded | |
| # ("mypyc doesn't have great support for free threaded builds"), so no cp314t. | |
| 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 black ${{ env.BLACK_VERSION }} | |
| uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| with: | |
| repository: psf/black | |
| ref: ${{ env.BLACK_VERSION }} | |
| persist-credentials: false | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| only: ${{ matrix.python }}-manylinux_riscv64 | |
| env: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: black-${{ env.BLACK_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish black ${{ inputs.version || '26.5.1' }} 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: black-${{ env.BLACK_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 }} |