Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.4.0] - 2026-09-14

### Added
- **Azure Managed Identity Authentication**: Added support for Azure Database for PostgreSQL Flexible Server authentication using Microsoft Entra ID OAuth2 access tokens via Azure Workload Identity, VM-based Managed Identity, and Azure CLI.
- **Dynamic Token Refresh**: Integrated with `pgxpool.Pool` via `BeforeConnect` to automatically acquire fresh tokens for scope `https://ossrdbms-aad.database.windows.net/.default` on every new connection, and periodically recycle pool connections with configurable `POSTGRES_MAX_CONN_LIFETIME`.
- **Database User Mapping**: Supported setting the database user via `POSTGRES_USER` or directly in the DSN to map to the PostgreSQL Entra role (e.g. managed identity name).
- **Decoupled Schema Migrations**: Supported running migrations via Azure Managed Identity, an independently authenticated password DSN (`POSTGRES_MIGRATIONS_DSN`), or skipping startup migrations (`POSTGRES_RUN_MIGRATIONS=false`) for external jobs/pipelines (`POSTGRES_MIGRATE_ONLY=true`).
- **Helm Chart Azure Workload Identity Support**: Added Helm values and templates for Azure Workload Identity, direct DSNs without static password secrets, and added `values-azure-workload-identity.yaml` example.

### Changed
- Updated Helm chart version and appVersion to `0.4.0`.
- Configured default container image in `docker-compose.yml` to `ghcr.io/autonomous-bits/spool-rack:0.4.0`.
- Updated binary version to `0.4.0`.

## [0.3.0] - 2026-09-13

### Added
Expand Down Expand Up @@ -50,7 +57,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Seeded development environment with Docker Compose.
- Health endpoint (`/healthz`) with contract and version diagnostics.

[Unreleased]: https://github.com/autonomous-bits/spool-rack/compare/v0.3.0...HEAD
[Unreleased]: https://github.com/autonomous-bits/spool-rack/compare/v0.4.0...HEAD
[0.4.0]: https://github.com/autonomous-bits/spool-rack/compare/v0.3.0...v0.4.0
[0.3.0]: https://github.com/autonomous-bits/spool-rack/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/autonomous-bits/spool-rack/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/autonomous-bits/spool-rack/releases/tag/v0.1.0
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ kubectl -n spool-rack create secret generic spool-rack-postgres \

# 2. Install the chart
helm upgrade --install spool-rack oci://ghcr.io/autonomous-bits/charts/spool-rack \
--version 0.3.0 \
--version 0.4.0 \
--namespace spool-rack \
--set postgres.dsnSecret.name=spool-rack-postgres
```
Expand Down
4 changes: 2 additions & 2 deletions charts/spool-rack/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: v2
name: spool-rack
description: A Helm chart for the Spool Rack server
type: application
version: 0.3.0
appVersion: "0.3.0"
version: 0.4.0
appVersion: "0.4.0"
annotations:
org.opencontainers.image.source: https://github.com/autonomous-bits/spool-rack
org.opencontainers.image.description: Helm chart for Spool Rack server
Expand Down
2 changes: 1 addition & 1 deletion charts/spool-rack/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Install directly from the published OCI registry:

```bash
helm upgrade --install spool-rack oci://ghcr.io/autonomous-bits/charts/spool-rack \
--version 0.3.0 \
--version 0.4.0 \
--namespace spool-rack \
--set postgres.dsnSecret.name=spool-rack-postgres
```
Expand Down
2 changes: 1 addition & 1 deletion cmd/spool-rack/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ const (
)

var (
version = "0.3.0"
version = "0.4.0"
)

func main() {
Expand Down
4 changes: 2 additions & 2 deletions cmd/spool-rack/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func TestResolveMigrationUser(t *testing.T) {
}

func TestVersion(t *testing.T) {
if version != "0.3.0" {
t.Errorf("version = %q, want 0.3.0", version)
if version != "0.4.0" {
t.Errorf("version = %q, want 0.4.0", version)
}
}
2 changes: 1 addition & 1 deletion docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
services:
spool-rack:
image: ${SPOOL_RACK_IMAGE:-ghcr.io/autonomous-bits/spool-rack:0.3.0}
image: ${SPOOL_RACK_IMAGE:-ghcr.io/autonomous-bits/spool-rack:0.4.0}
build:
context: .
dockerfile: Dockerfile
Expand Down
2 changes: 1 addition & 1 deletion infra/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ kubectl -n spool-rack create secret generic spool-rack-postgres \
From the published OCI registry:
```bash
helm upgrade --install spool-rack oci://ghcr.io/autonomous-bits/charts/spool-rack \
--version 0.3.0 \
--version 0.4.0 \
--namespace spool-rack \
--set postgres.dsnSecret.name=spool-rack-postgres
```
Expand Down
4 changes: 2 additions & 2 deletions infra/charts/spool-rack/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ apiVersion: v2
name: spool-rack
description: A Helm chart for the Spool Rack server
type: application
version: 0.3.0
appVersion: "0.3.0"
version: 0.4.0
appVersion: "0.4.0"
annotations:
org.opencontainers.image.source: https://github.com/autonomous-bits/spool-rack
org.opencontainers.image.description: Helm chart for Spool Rack server
Expand Down
2 changes: 1 addition & 1 deletion infra/charts/spool-rack/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Install directly from the published OCI registry:

```bash
helm upgrade --install spool-rack oci://ghcr.io/autonomous-bits/charts/spool-rack \
--version 0.3.0 \
--version 0.4.0 \
--namespace spool-rack \
--set postgres.dsnSecret.name=spool-rack-postgres
```
Expand Down