docs: Update projects #36
Workflow file for this run
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 the `test` and `build_wheels` jobs of | |
| # https://github.com/bluetooth-devices/bleak-esphome/blob/v4.1.0/.github/workflows/ci.yml | |
| name: Build bleak-esphome wheels (riscv64) | |
| on: | |
| workflow_dispatch: | |
| inputs: | |
| version: | |
| description: 'Version glob to (re)build; empty builds every version of docs/packages/bleak-esphome.yaml not released yet' | |
| required: false | |
| default: '' | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-bleak-esphome.yml' | |
| - 'docs/packages/bleak-esphome.yaml' | |
| push: | |
| branches: [main] | |
| paths: | |
| - '.github/workflows/build-bleak-esphome.yml' | |
| - 'docs/packages/bleak-esphome.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: bleak-esphome | |
| version: ${{ inputs.version }} | |
| build_wheels: | |
| needs: [setup] | |
| if: needs.setup.outputs.versions != '[]' | |
| name: Build bleak-esphome ${{ 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) }} | |
| python: ["cp312", "cp313", "cp314", "cp314t"] | |
| env: | |
| BLEAK_ESPHOME_VERSION: ${{ matrix.version }} | |
| steps: | |
| - name: Checkout bleak-esphome v${{ env.BLEAK_ESPHOME_VERSION }} | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| with: | |
| repository: bluetooth-devices/bleak-esphome | |
| ref: v${{ env.BLEAK_ESPHOME_VERSION }} | |
| persist-credentials: false | |
| - name: Build wheels | |
| uses: pypa/cibuildwheel@1828c10ab37f080699c7b81cea34097c684a7074 # v4.2.0 | |
| with: | |
| output-dir: wheelhouse/ | |
| # cryptography, a hard runtime dependency, has no musllinux riscv64 wheel. | |
| only: ${{ matrix.python }}-manylinux_riscv64 | |
| env: | |
| CIBW_MANYLINUX_RISCV64_IMAGE: ${{ env.MANYLINUX_RISCV64_IMAGE }} | |
| # REQUIRE_CYTHON must reach the build container; only-binary keeps pip on our compiled deps. | |
| CIBW_ENVIRONMENT: >- | |
| REQUIRE_CYTHON=1 | |
| PIP_EXTRA_INDEX_URL=https://pypi.riseproject.dev/simple/ | |
| PIP_ONLY_BINARY=aioesphomeapi,bluetooth-data-tools,cffi,cryptography,habluetooth,lru-dict,zeroconf | |
| # Upstream's pytest ini is coverage-only and its pythonpath would shadow the wheel with src/. | |
| CIBW_TEST_SOURCES: tests | |
| # The dev group's zeroconf<0.151.0 pin has no riscv64 wheel; aioesphomeapi pulls zeroconf in. | |
| CIBW_TEST_REQUIRES: >- | |
| pytest>=9.1.1,<10 pytest-codspeed>=5.0.3,<6.0.0 | |
| pytest-asyncio>=1.4.0,<2.0.0 | |
| # build_ext.py swallows compile errors, so prove the installed module is compiled. | |
| CIBW_TEST_COMMAND: >- | |
| python -c "from bleak_esphome.backend import scanner; | |
| assert scanner.__file__.endswith('.so'), scanner.__file__" && | |
| python -m pytest -v -Wdefault tests | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| with: | |
| name: bleak-esphome-${{ env.BLEAK_ESPHOME_VERSION }}-${{ matrix.python }}-manylinux_riscv64 | |
| path: wheelhouse/*.whl | |
| if-no-files-found: error | |
| publish: | |
| name: Publish bleak-esphome ${{ 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: bleak-esphome-${{ matrix.version }}-*-manylinux_riscv64 |