From bf785b6725aeed1c447ce95723f3ce8999447881 Mon Sep 17 00:00:00 2001 From: Shayne Legault <8741557+shaynelegault@users.noreply.github.com> Date: Thu, 29 Oct 2026 21:42:44 -0600 Subject: [PATCH] ci: pair development checks with hardware 0.1.11 CLI main requires hardware 0.1.11, which has not been released. Build a wheel from a pinned hardware revision for pull requests and branch pushes so their package and test jobs use a compatible version. Align the default release tag with the dependency while retaining the existing published-wheel and explicit-artifact release paths. Signed-off-by: Shayne Legault <8741557+shaynelegault@users.noreply.github.com> --- .github/workflows/build.yml | 21 ++++++++++++++++++--- docs/releases.md | 2 +- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e9e7dec..be26861 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,7 @@ on: hardware_tag: description: Hardware version to pair with this CLI required: true - default: v0.1.10 + default: v0.1.11 hardware_run_id: description: Optional hardware workflow run providing the tested wheel before its first release required: false @@ -24,7 +24,7 @@ jobs: package: runs-on: ubuntu-24.04 env: - HARDWARE_TAG: ${{ inputs.hardware_tag || 'v0.1.10' }} + HARDWARE_TAG: ${{ inputs.hardware_tag || 'v0.1.11' }} steps: - uses: actions/checkout@v4 with: @@ -32,8 +32,23 @@ jobs: - uses: actions/setup-python@v5 with: python-version: '3.12' + # Hardware 0.1.11 is required by the CLI but has not been released yet. + # Development checks use a fixed upstream revision until it is published. + - name: Check out pinned hardware source for development checks + if: github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_type == 'branch') + uses: actions/checkout@v4 + with: + repository: OrchardLinux/hardware + ref: ae1457edee7d2e52213e4d979aee02dbbeb90ce0 + path: out/hardware-source + persist-credentials: false + - name: Build the pinned hardware wheel for development checks + if: github.event_name == 'pull_request' || (github.event_name == 'push' && github.ref_type == 'branch') + run: | + python -m pip install build + python -m build --wheel --outdir "$PWD/out/hardware" out/hardware-source - name: Download pinned released hardware dependency - if: inputs.hardware_run_id == '' + if: github.event_name != 'pull_request' && (github.event_name != 'push' || github.ref_type != 'branch') && inputs.hardware_run_id == '' env: GH_TOKEN: ${{ github.token }} run: | diff --git a/docs/releases.md b/docs/releases.md index 6efe4c5..288a44f 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -4,7 +4,7 @@ The bootstrap installs `releases/latest/download/requirements.txt`. This file se ## GitHub Actions -`.github/workflows/build.yml` tests on Python 3.9 and 3.12 for pull requests and `main`. It downloads a published hardware wheel and verifies its release checksums; no sibling source checkout is used. The default hardware tag is explicit in the workflow and must be updated with the package dependency when selecting a new pair. Manual dispatch also lets you choose a hardware tag. +`.github/workflows/build.yml` tests on Python 3.9 and 3.12 for pull requests and `main`. Until hardware 0.1.11 is published, those development checks build its wheel from a pinned hardware source revision. That source wheel does not include the prebuilt loaders in a published hardware wheel. Tag and manual builds use a published hardware wheel with verified release checksums, or an explicitly selected hardware workflow artifact. They default to hardware v0.1.11, which must be published before a release build can use it. Manual dispatch also lets you choose a hardware tag. A version tag matching `pyproject.toml` creates a **draft** release containing the wheel, sdist, hashed `requirements.txt` and `SHA256SUMS`. Manual builds only retain workflow artifacts for seven days. The hardware release must be published first; cross-repository drafts are not public dependency URLs. Nothing publishes automatically or operates a device.