Skip to content

ci(integration): switch linstor-client install to GitHub tarball#7

Closed
kvaps wants to merge 1 commit into
mainfrom
ci/integration-linstor-client-install
Closed

ci(integration): switch linstor-client install to GitHub tarball#7
kvaps wants to merge 1 commit into
mainfrom
ci/integration-linstor-client-install

Conversation

@kvaps
Copy link
Copy Markdown
Member

@kvaps kvaps commented May 22, 2026

Summary

The integration job's linstor-client install step was failing on ubuntu-latest (noble). Switch it to a working install path that gets PR CI back to green.

Why the previous attempts failed

  • apt-get install -y linstor-client python3-linstorUnable to locate package. LINBIT only ships debs for Debian (bookworm/bullseye/buster/trixie) and on the LINBIT PPA; neither covers noble.
  • python3 -m pip install --break-system-packages linstor-client python-linstorNo matching distribution found for linstor-client. Only python-linstor is on PyPI; linstor-client and the bare linstor package name are not.

What works

Install path validated locally inside a fresh ubuntu:24.04 container:

  1. pip install python-linstor==1.27.1 argcomplete from PyPI (the runtime deps).
  2. pip install --no-deps https://github.com/LINBIT/linstor-client/archive/refs/tags/v1.27.1.tar.gz from GitHub. --no-deps is needed to dodge an upstream setup.py typo (missing comma joins python3-setuptools + python-linstor into one malformed requirement name); the runtime deps are pinned explicitly in step 1.

After install, linstor --version prints linstor-client 1.27.1; GIT-hash: UNKNOWN, which is the exact version tests/integration/group_h_test.go is written against.

Tradeoffs

  • Pinned to v1.27.1. When v1.27.2+ ships with a fixed setup.py, we can drop --no-deps and either bump the pin or float to a range. The pin is intentional (matches what the integration harness asserts on), not just a workaround.
  • We could alternatively run the whole job inside piraeusdatastore/piraeus-client (option 5 from the task), but that image is last-updated June 2024 and would still pin us to v1.22.1. The tarball path gets us 1.27.1 with zero infra moving parts.

How to verify

Locally:

docker run --rm ubuntu:24.04 bash -c '
  apt-get update -qq >/dev/null 2>&1
  apt-get install -y --no-install-recommends python3 python3-pip ca-certificates curl >/dev/null 2>&1
  python3 -m pip install --break-system-packages --upgrade python-linstor==1.27.1 argcomplete
  python3 -m pip install --break-system-packages --no-deps https://github.com/LINBIT/linstor-client/archive/refs/tags/v1.27.1.tar.gz
  linstor --version
'

In CI: watch the Integration job on this PR — the Install linstor-client step should finish with linstor-client 1.27.1; GIT-hash: UNKNOWN and subsequent integration tests should run.

Related

The pull-request.yml consolidated workflow (on branch ci/pull-request-pipeline, PR #6) has an equivalent broken install step using pip install linstor-client python-linstor and a continue-on-error: true muzzle on the integration job. That branch needs the same fix applied + continue-on-error: true dropped — handled separately since the file does not exist on main yet.

@gemini-code-assist
Copy link
Copy Markdown

Note

Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 22, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e0977f1c-666c-4776-9697-a72d2f1113ed

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ci/integration-linstor-client-install

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

The previous apt-get install path failed on ubuntu-latest (noble): LINBIT
ships linstor-client debs only for Debian (bookworm/bullseye/buster/trixie)
and on the LINBIT PPA, neither of which covers noble. `apt-get install
linstor-client` exits with "Unable to locate package".

The PyPI route is also a dead end: only `python-linstor` is published
there; `linstor-client` and the bare `linstor` package name are NOT on
PyPI, so `pip install linstor-client` exits with "No matching distribution
found".

Install path that actually works on ubuntu:24.04 (validated locally in a
fresh container):

  1. pip install `python-linstor==1.27.1` + `argcomplete` from PyPI for
     the runtime deps.
  2. pip install the v1.27.1 tarball directly from
     https://github.com/LINBIT/linstor-client/archive/refs/tags/v1.27.1.tar.gz
     with `--no-deps` to bypass an upstream setup.py typo (missing comma
     joins `python3-setuptools` + `python-linstor` into one malformed
     requirement).

Version pin is deliberate: tests/integration/group_h_test.go explicitly
documents that it is written against linstor-client 1.27.1 CLI behaviour.

Co-Authored-By: Claude <noreply@anthropic.com>
Signed-off-by: Andrei Kvapil <kvapss@gmail.com>
@kvaps kvaps force-pushed the ci/integration-linstor-client-install branch from 1213add to d12f4ee Compare May 22, 2026 11:50
@kvaps
Copy link
Copy Markdown
Member Author

kvaps commented May 22, 2026

Superseded by #10 (bundled with the other two CI cleanups so the pipeline runs once).

@kvaps kvaps closed this May 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant