Skip to content

fix(postgres): repair Docker Hub publish for ruvector-postgres 2.0.6 - #1115

Open
ruvnet wants to merge 2 commits into
mainfrom
fix/postgres-docker-publish
Open

ruvnet wants to merge 2 commits into
mainfrom
fix/postgres-docker-publish

Conversation

@ruvnet

@ruvnet ruvnet commented Oct 1, 2026

Copy link
Copy Markdown
Owner

Docker Hub ruvnet/ruvector-postgres has been stuck at 2.0.5 (March) — every Docker Hub Publish run since has failed at login.

Causes fixed

  • Workflow read DOCKERHUB_USERNAME/DOCKERHUB_TOKEN (never set) and pushed to the nonexistent ruvector/ namespace → now ruvnet/, auth via DOCKER_PERSONAL_ACCESS_TOKEN.
  • Triggered on every release (esp32, rvf, crates…) → now only ruvector-postgres-v* tags or manual dispatch, so other releases can't retag :latest.
  • Docker build had no lockfile → resolved icu_* 2.3 (rustc 1.88) and failed on 1.86. Now copies the crate's Cargo.lock; cargo-pgrx 0.12.6 → 0.12.9 to match pinned pgrx.
  • Workflow RUST_VERSION 1.83 overrode the Dockerfile's 1.86 → aligned to 1.86.
  • Labels/workspace version 0.3.1/2.0.4 → 2.0.6.

Verified locally (pg17, amd64): image builds, CREATE EXTENSION ruvector, ruvector_version() = 2.0.6, HNSW index scan returns correct neighbours, IVFFlat index builds.

Before publishing: the Docker Hub PAT in GCP Secret Manager is expired and the repo has no DOCKER_PERSONAL_ACCESS_TOKEN secret — a new token must be added first.

Not in scope: the extension's SQL default_version is still 0.3.0 (pre-existing version tangle).

🤖 Generated with claude-flow

ruvnet added 2 commits October 1, 2026 14:43
The Docker Hub image was stuck at 2.0.5 because every publish run failed at
login: the workflow read DOCKERHUB_USERNAME/DOCKERHUB_TOKEN (never set) and
targeted the nonexistent `ruvector/` namespace instead of `ruvnet/`.

- push to ruvnet/ruvector-postgres, auth with DOCKER_PERSONAL_ACCESS_TOKEN
- only run on ruvector-postgres-v* releases or manual dispatch, so esp32/rvf/
  crates releases can no longer retag :latest
- strip the ruvector-postgres-v prefix when deriving the version from a tag
- RUST_VERSION 1.83 -> 1.85 (the build-arg overrode the Dockerfile's 1.85,
  which edition2024 deps need)
- Dockerfile labels/workspace version 0.3.1/2.0.4 -> 2.0.6

Co-Authored-By: claude-flow <ruv@ruv.net>
The image built without a lockfile, so cargo resolved the newest crates
(icu_* 2.3 needs rustc 1.88) and the build failed on the 1.86 toolchain.
Copy the crate's Cargo.lock into the build workspace, install the
cargo-pgrx version that matches the pinned pgrx (0.12.9, as CI does), and
keep the workflow's RUST_VERSION in step with the Dockerfile (1.86).

Verified locally: pg17 image builds, CREATE EXTENSION works,
ruvector_version() = 2.0.6, HNSW index scan and IVFFlat build succeed.

Co-Authored-By: claude-flow <ruv@ruv.net>
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Results Summary

Distance Function Benchmarks

test Euclidean Distance/scalar/128 ... bench:          85 ns/iter (+/- 0)
test Euclidean Distance/avx2/128 ... bench:          10 ns/iter (+/- 0)
test Euclidean Distance/scalar/384 ... bench:         295 ns/iter (+/- 1)
test Euclidean Distance/avx2/384 ... bench:          37 ns/iter (+/- 0)
test Euclidean Distance/scalar/768 ... bench:         609 ns/iter (+/- 0)
test Euclidean Distance/avx2/768 ... bench:          82 ns/iter (+/- 0)
test Euclidean Distance/scalar/1536 ... bench:        1237 ns/iter (+/- 0)
test Euclidean Distance/avx2/1536 ... bench:         186 ns/iter (+/- 0)
test Euclidean Distance/scalar/3072 ... bench:        2494 ns/iter (+/- 5)
test Euclidean Distance/avx2/3072 ... bench:         396 ns/iter (+/- 0)

test Cosine Distance/scalar/128 ... bench:         107 ns/iter (+/- 0)
test Cosine Distance/avx2/128 ... bench:          15 ns/iter (+/- 0)
test Cosine Distance/scalar/384 ... bench:         316 ns/iter (+/- 1)
test Cosine Distance/avx2/384 ... bench:          46 ns/iter (+/- 0)
test Cosine Distance/scalar/768 ... bench:         630 ns/iter (+/- 0)
test Cosine Distance/avx2/768 ... bench:          95 ns/iter (+/- 1)
test Cosine Distance/scalar/1536 ... bench:        1258 ns/iter (+/- 6)
test Cosine Distance/avx2/1536 ... bench:         200 ns/iter (+/- 0)
test Cosine Distance/scalar/3072 ... bench:        2514 ns/iter (+/- 8)
test Cosine Distance/avx2/3072 ... bench:         409 ns/iter (+/- 0)

test Cosine Distance (Normalized)/scalar_dot/128 ... bench:          78 ns/iter (+/- 0)
test Cosine Distance (Normalized)/avx2_dot/128 ... bench:          11 ns/iter (+/- 0)
test Cosine Distance (Normalized)/scalar_dot/384 ... bench:         288 ns/iter (+/- 0)
test Cosine Distance (Normalized)/avx2_dot/384 ... bench:          35 ns/iter (+/- 0)
test Cosine Distance (Normalized)/scalar_dot/768 ... bench:         601 ns/iter (+/- 0)
test Cosine Distance (Normalized)/avx2_dot/768 ... bench:          80 ns/iter (+/- 0)
test Cosine Distance (Normalized)/scalar_dot/1536 ... bench:        1229 ns/iter (+/- 0)
test Cosine Distance (Normalized)/avx2_dot/1536 ... bench:         182 ns/iter (+/- 0)
test Cosine Distance (Normalized)/scalar_dot/3072 ... bench:        2485 ns/iter (+/- 19)
test Cosine Distance (Normalized)/avx2_dot/3072 ... bench:         391 ns/iter (+/- 0)

test Inner Product/scalar/128 ... bench:          75 ns/iter (+/- 0)
test Inner Product/avx2/128 ... bench:           7 ns/iter (+/- 0)
test Inner Product/scalar/384 ... bench:         285 ns/iter (+/- 0)
test Inner Product/avx2/384 ... bench:          32 ns/iter (+/- 0)
test Inner Product/scalar/768 ... bench:         599 ns/iter (+/- 5)
test Inner Product/avx2/768 ... bench:          80 ns/iter (+/- 0)
test Inner Product/scalar/1536 ... bench:        1227 ns/iter (+/- 1)
test Inner Product/avx2/1536 ... bench:         181 ns/iter (+/- 0)
test Inner Product/scalar/3072 ... bench:        2482 ns/iter (+/- 11)
test Inner Product/avx2/3072 ... bench:         391 ns/iter (+/- 0)

test Manhattan Distance/scalar/128 ... bench:          82 ns/iter (+/- 0)
test Manhattan Distance/scalar/384 ... bench:         294 ns/iter (+/- 0)
test Manhattan Distance/scalar/768 ... bench:         605 ns/iter (+/- 3)
test Manhattan Distance/scalar/1536 ... bench:        1236 ns/iter (+/- 1)
test Manhattan Distance/scalar/3072 ... bench:        2492 ns/iter (+/- 2)

HNSW Index Benchmarks


Quantization Benchmarks


See full results in the artifacts.

@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Benchmark Comparison

Distance Benchmarks

Baseline (main)

test Euclidean Distance/scalar/128 ... bench:          85 ns/iter (+/- 0)
test Euclidean Distance/avx2/128 ... bench:          10 ns/iter (+/- 0)
test Euclidean Distance/scalar/384 ... bench:         295 ns/iter (+/- 1)
test Euclidean Distance/avx2/384 ... bench:          35 ns/iter (+/- 0)
test Euclidean Distance/scalar/768 ... bench:         609 ns/iter (+/- 0)
test Euclidean Distance/avx2/768 ... bench:          82 ns/iter (+/- 0)
test Euclidean Distance/scalar/1536 ... bench:        1238 ns/iter (+/- 0)
test Euclidean Distance/avx2/1536 ... bench:         194 ns/iter (+/- 7)
test Euclidean Distance/scalar/3072 ... bench:        2494 ns/iter (+/- 1)
test Euclidean Distance/avx2/3072 ... bench:         403 ns/iter (+/- 0)

test Cosine Distance/scalar/128 ... bench:         107 ns/iter (+/- 0)
test Cosine Distance/avx2/128 ... bench:          15 ns/iter (+/- 0)
test Cosine Distance/scalar/384 ... bench:         316 ns/iter (+/- 0)
test Cosine Distance/avx2/384 ... bench:          43 ns/iter (+/- 0)
test Cosine Distance/scalar/768 ... bench:         630 ns/iter (+/- 0)
test Cosine Distance/avx2/768 ... bench:          95 ns/iter (+/- 0)
test Cosine Distance/scalar/1536 ... bench:        1258 ns/iter (+/- 2)
test Cosine Distance/avx2/1536 ... bench:         200 ns/iter (+/- 0)
test Cosine Distance/scalar/3072 ... bench:        2514 ns/iter (+/- 26)

Current (PR)

test Euclidean Distance/scalar/128 ... bench:          85 ns/iter (+/- 0)
test Euclidean Distance/avx2/128 ... bench:          10 ns/iter (+/- 0)
test Euclidean Distance/scalar/384 ... bench:         295 ns/iter (+/- 1)
test Euclidean Distance/avx2/384 ... bench:          37 ns/iter (+/- 0)
test Euclidean Distance/scalar/768 ... bench:         609 ns/iter (+/- 0)
test Euclidean Distance/avx2/768 ... bench:          82 ns/iter (+/- 0)
test Euclidean Distance/scalar/1536 ... bench:        1237 ns/iter (+/- 0)
test Euclidean Distance/avx2/1536 ... bench:         186 ns/iter (+/- 0)
test Euclidean Distance/scalar/3072 ... bench:        2494 ns/iter (+/- 5)
test Euclidean Distance/avx2/3072 ... bench:         396 ns/iter (+/- 0)

test Cosine Distance/scalar/128 ... bench:         107 ns/iter (+/- 0)
test Cosine Distance/avx2/128 ... bench:          15 ns/iter (+/- 0)
test Cosine Distance/scalar/384 ... bench:         316 ns/iter (+/- 1)
test Cosine Distance/avx2/384 ... bench:          46 ns/iter (+/- 0)
test Cosine Distance/scalar/768 ... bench:         630 ns/iter (+/- 0)
test Cosine Distance/avx2/768 ... bench:          95 ns/iter (+/- 1)
test Cosine Distance/scalar/1536 ... bench:        1258 ns/iter (+/- 6)
test Cosine Distance/avx2/1536 ... bench:         200 ns/iter (+/- 0)
test Cosine Distance/scalar/3072 ... bench:        2514 ns/iter (+/- 8)

This branch has not been deployed

No deployments
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