Skip to content

chore(build): host GDAL and hastegeo wheels on GitHub Releases#75

Open
jQuinRivero wants to merge 1 commit into
mainfrom
v-joaquinri/move-binaries-to-github
Open

chore(build): host GDAL and hastegeo wheels on GitHub Releases#75
jQuinRivero wants to merge 1 commit into
mainfrom
v-joaquinri/move-binaries-to-github

Conversation

@jQuinRivero

@jQuinRivero jQuinRivero commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Summary

Moves the GDAL and hastegeo wheels from legacy Azure Blob hosting to the public haste-binaries GitHub Release, and adds an automated release-candidate pipeline for hastegeo changes.

For each hastelib release candidate, the pipeline produces one matching deployable set:

hastegeo-X.Y.ZrcN-py3-none-any.whl
hastetraining:X.Y.ZrcN
hasteimageryprep:X.Y.ZrcN

Changes

  • Hosts GDAL and stable hastegeo wheels on GitHub Releases using anonymous public download URLs.
  • Keeps local Function Docker builds on editable checked-out hastelib source.
  • Makes the Hatch hook build-only; version resolution and publication are handled by tested CI scripts.
  • Adds sequential PEP 440 RC versioning with patch/minor/major and exact-version overrides.
  • Builds the RC wheel once in a read-only PR job.
  • Publishes same-repository PR RC artifacts through a trusted default-branch workflow.
  • Builds training and imageryprep images once in ACR, in parallel, using the exact wheel RC as both image tags.
  • Prevents duplicate hastelib image builds in the existing Docker workflow.
  • Defaults deployment image tags to the selected hastegeo version and rejects mismatched RC artifact sets.
  • Prevents wheel and versioned image tags from being overwritten.
  • Makes stable releases idempotent using source tags.
  • Adds report-only scheduled RC cleanup with explicit retention support.
  • Updates release, deployment, Docker, and contributor documentation.

Why

Previously, wheel building, publication, and dependency pin updates were coupled together. The initial CI design also built the same large Docker images locally and then rebuilt them in ACR, adding unnecessary wait time.

The new design separates untrusted PR builds from privileged publication while ensuring each expensive Docker image is built only once. The wheel and both images share one version, making the exact artifact set straightforward to deploy and reproduce.

Security properties

  • PR build jobs use read-only repository permissions and no cloud credentials.
  • Fork PRs cannot publish artifacts.
  • Privileged publication uses workflow definitions from the default branch.
  • Wheel filename and package metadata are validated before publication.
  • Existing wheel names and mutable versioned image tags are rejected.
  • Stable release publication remains separately gated.

Testing

  • Release/version/publisher/workflow unit tests pass.
  • Workflow YAML and action pin validation pass.
  • Real RC wheel build and metadata validation pass.
  • Function, training, and imageryprep Docker builds were smoke-tested.
  • Public wheel URLs were tested from a clean Linux container.
  • Standard repository security and code scanning checks run on the PR.

Rollout

The RC build and trusted publication workflows become active after these workflow definitions are available on the default branch. Stable publication remains disabled until the repository's release controls are configured.

Legacy Blob-hosted files are not removed, preserving compatibility for existing external pins during migration.

@jQuinRivero
jQuinRivero marked this pull request as ready for review July 8, 2026 13:20
@jQuinRivero
jQuinRivero requested a review from a team as a code owner July 8, 2026 13:20
jQuinRivero added a commit that referenced this pull request Jul 13, 2026
Resolve PR #75 against current main and implement ADO 547517 with a
credential-safe wheel and image release flow.

- make Hatch build-only and resolve versions in pure tested policy code
- build PR wheels and Docker images without write or Azure credentials
- publish from a trusted workflow_run behind the protected release gate
- validate wheel filename/METADATA and never clobber existing assets
- use stable source tags for idempotent main releases
- build and lock versioned ACR image tags
- validate deploy wheel before Azure login and fail on func publish errors
- make scheduled RC cleanup report-only and manual deletion gated
- pin workflow actions to full SHAs and add release-policy tests/specs

The protected hastegeo-release environment and enablement variables remain
disabled until a repository administrator configures required reviewers.
Move GDAL and hastegeo wheels to the public haste-binaries GitHub Release and
add a secure automated release pipeline.

- keep local Function builds on editable checked-out hastegeo source
- resolve and build sequential PEP 440 RC wheels in read-only PR jobs
- publish same-repository RCs from trusted default-branch workflow code
- build training and imageryprep once in ACR with the exact matching RC tag
- preserve Docker-only PR behavior and avoid duplicate hastelib image builds
- validate deployable wheel/image versions before Azure deployment
- prevent wheel and versioned image overwrites
- make stable releases idempotent through source tags
- report stale RC cleanup candidates and require explicit deletion approval
- add release policy, publisher, deployment, cleanup, and workflow tests
@jQuinRivero
jQuinRivero force-pushed the v-joaquinri/move-binaries-to-github branch from 6483a72 to 6ae5969 Compare July 15, 2026 13:19
@jQuinRivero
jQuinRivero removed the request for review from a team July 15, 2026 13:46
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