Skip to content

ci(package-geobrix-artifacts): fail-fast preflights for LFS + lockfile#30

Merged
mjohns-databricks merged 2 commits into
mainfrom
beta/0.3.0
May 20, 2026
Merged

ci(package-geobrix-artifacts): fail-fast preflights for LFS + lockfile#30
mjohns-databricks merged 2 commits into
mainfrom
beta/0.3.0

Conversation

@mjohns-databricks
Copy link
Copy Markdown
Collaborator

Summary

Folds two operator-facing preflight steps into package-geobrix-artifacts.yml plus carries forward the requirements-build.txt lockfile that was missing on main. Motivated by two failed runs of this workflow against the v0.3.0 release (26191999817, 26192103582) where the failure modes pointed at the symptom (Object does not exist on the server: [404] and Could not open requirements file) instead of the actual fix.

Two new preflight steps:

  1. LFS preflight. actions/checkout@v6 with lfs: true errors out with a bare Object does not exist on the server: [404] when an LFS pointer is committed but the bytes were never uploaded to GitHub LFS storage (common the first time a repo at an org uses LFS). Split the LFS handling out of actions/checkout (now lfs: false) and run git lfs pull in a follow-up step that prints the exact git lfs push origin <branch-or-tag> --all recovery command on failure.

  2. Lockfile preflight. The hash-pinned wheel-build step pip install --require-hashes -r python/geobrix/requirements-build.txt previously errored with pip's generic Could not open requirements file when the lockfile was missing. New step checks the file is committed up front and prints the uv pip compile --generate-hashes command to regenerate it.

Also in this PR (the requirements-build.txt itself):

The lockfile was generated locally via uv pip compile --generate-hashes --python-version 3.12 --output-file requirements-build.txt requirements-build.in and committed to beta/0.3.0 to unblock the v0.3.0 artifact build. Carrying it forward to main so main-targeted runs of this workflow also have it.

Test plan

  • Verify v0.3.0 artifact build completes successfully (the run in flight when this PR was opened). If it fails again, hold the merge until the workflow is green against v0.3.0 — that's the contract; merging this PR's improvements into main only once we have a clean v0.3.0 cut.
  • After merge: trigger package-geobrix-artifacts.yml against a test ref (or wait for the next release cut) and confirm both new preflight steps appear in the run log. The pass case is silent; the failure case (only triggerable by deleting the lockfile or rolling back the LFS push, which we don't need to actively test) would print the actionable message.

This pull request and its description were written by Isaac.

Michael Johns added 2 commits May 20, 2026 17:58
Missing companion lockfile for python/geobrix/requirements-build.in
(added in #28 with the package-geobrix-artifacts.yml workflow). The
workflow's hash-pinned wheel-build step `pip install --require-hashes
-r python/geobrix/requirements-build.txt` errored on its first
v0.3.0 run with "Could not open requirements file".

Generated via:
  cd python/geobrix
  uv pip compile --generate-hashes --python-version 3.12 \
      --output-file requirements-build.txt requirements-build.in

Co-authored-by: Isaac
Two operator-facing preflight steps that surface actionable errors
instead of opaque failures, motivated by the two failed runs of this
workflow against v0.3.0:

1. LFS preflight. actions/checkout@v6 with `lfs: true` errors out with
   a bare `Object does not exist on the server: [404]` when an LFS
   pointer is committed but the bytes were never uploaded to GitHub
   LFS storage. Split the LFS handling out of actions/checkout (now
   `lfs: false`) and run `git lfs pull` in a follow-up step that prints
   the exact `git lfs push origin <branch-or-tag> --all` recovery
   command on failure. Common when a repo is the first to use LFS at
   the org level and storage hasn't been primed.

2. Lockfile preflight. The hash-pinned wheel-build step
   `pip install --require-hashes -r python/geobrix/requirements-build.txt`
   previously errored with pip's generic `Could not open requirements
   file` when the lockfile was missing. New step checks for the file
   up front and prints the `uv pip compile --generate-hashes` command
   to regenerate it.

Co-authored-by: Isaac
@mjohns-databricks mjohns-databricks requested a review from a team as a code owner May 20, 2026 22:04
@mjohns-databricks mjohns-databricks merged commit 631edac into main May 20, 2026
5 checks passed
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