Skip to content

Changelog

Version v2.2.0

What’s new

This release adds drift detection — read-only endpoints that diff BridgePort’s stored view of a service, server, or environment against what’s actually running on the host — and promotes the Go HTTP client to a standalone, importable module so external tooling can consume it directly. No database migrations; nothing to do on upgrade beyond pulling the new image.


Features

Drift detection endpoints (#218)

Three new read-only endpoints surface where BridgePort’s database has diverged from the live host — handy after an upgrade, an out-of-band change, or a post-incident sweep, without SSHing in and eyeballing each service by hand.

  • GET /api/services/:id/drift — per-deployment diff (keyed by server) of compose path & content, image digest, exposed ports, attached config-file content, and managed env vars.
  • GET /api/servers/:id/drift — every deployment on one server.
  • GET /api/environments/:envId/drift — environment-wide roll-up, per service and per server.
  • Each field reports match: boolean with expected/actual when it differs. Comparisons that can’t be resolved cleanly (e.g. digest-mode caveats, operator-maintained or shared compose files) return match: null with a reason rather than a false-positive mismatch.

Safe by construction: the host is only ever read (docker inspect + file reads, never mutating commands), the endpoints are viewer-accessible (no operator/admin gate), and no secrets leak — compose/config drift compares redacted-text checksums and env drift returns only BridgePort-managed key names, never decrypted values.

Importable Go client module (#217)

The typed Go HTTP client (previously locked inside cli/internal/api) is now a standalone, versioned module at github.com/bridgeinpt/bridgeport/client, so other tooling — most immediately the planned Terraform provider — can import it instead of forking and hand-chasing API changes.

  • Self-contained module (stdlib + testify-for-tests only), so go get github.com/bridgeinpt/bridgeport/client@<tag> works for external consumers.
  • The CLI now consumes the extracted module; its long-broken module path is fixed (bridgeport-cligithub.com/bridgeinpt/bridgeport/cli). No CLI behavior change.
  • Client README.md (install, bearer auth, *APIError handling, worked example) and a CONTRIBUTING.md section documenting the client/vX.Y.Z multi-module tagging convention.

The client module is versioned independently of the platform — see the note below about its client/ tag.


API changes

Added

  • GET /api/services/:id/drift, GET /api/servers/:id/drift, GET /api/environments/:envId/drift — read-only drift reports, viewer-accessible. (#218)

No deprecations or removals.


Under the hood

  • Go toolchain (Docker base image)golang 1.26-alpine → 1.26.4-alpine (#219) -----BEGIN SSH SIGNATURE----- U1NIU0lHAAAAAQAAADMAAAALc3NoLWVkMjU1MTkAAAAgEyiv4hf6iBgr34ICjN6HnEP/vs Yr31eNU5HhdkQaYd4AAAADZ2l0AAAAAAAAAAZzaGE1MTIAAABTAAAAC3NzaC1lZDI1NTE5 AAAAQKz9Rl99zkk+CwZFqzUaCeVgDT6GpinTALIbgBKU4AzU0tDv8OjoMPOJ1tP5umAPef StcKA/HFGqAnzuI91uBQw= -----END SSH SIGNATURE-----