Skip to content

Release v0.1.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Dec 04:46
· 12 commits to main since this release

GCP Secret Manager Emulator v0.1.0

Lightweight gRPC emulator for Google Cloud Secret Manager API

Installation

go install github.com/blackwell-systems/gcp-secret-manager-emulator/cmd/[email protected]

Or use as a library:

go get github.com/blackwell-systems/[email protected]

Stats

  • Test Coverage: 73.5%
  • Go Version: 1.24+
  • Commits: 13
  • Platforms: Linux, macOS, Windows

Features

  • Full Secret Manager v1 API implementation
  • No GCP credentials required
  • In-memory storage with thread-safe operations
  • Docker support for containerized deployment
  • Compatible with official cloud.google.com/go/secretmanager client

Supported Operations

Secrets:

  • CreateSecret - Create new secrets with labels
  • GetSecret - Retrieve secret metadata
  • ListSecrets - List all secrets with pagination
  • DeleteSecret - Remove secrets

Secret Versions:

  • AddSecretVersion - Add new version with payload
  • AccessSecretVersion - Retrieve version payload (supports "latest" alias)
  • GetSecretVersion - Retrieve version metadata

Changes

  • fix: Enable ARM64 Docker builds with Alpine workaround (270cff4)
  • docs: Add CI test status badge to README (04092c7)
  • ci: Install golangci-lint from source to match Go version (9ceb1ce)
  • ci: Update Go version requirements to 1.24+ (8ec1b5e)
  • fix: Update Go version requirements and golangci-lint version (e4829e3)
  • ci: Simplify golangci-lint config and pin version (e0ba501)
  • ci: Add golangci-lint configuration (68720c3)
  • fix: Update Dockerfile to use correct server binary path (561b939)
  • ci: Add GitHub Actions workflows for CI and automated releases (dd311fc)
  • docs: Add automatic version badge to README (bbfa8a9)
  • docs: Add package documentation and examples for pkg.go.dev (998534b)
  • Initial extraction from vaultmux (5819b6a)
  • Initial commit (66f2ba8)

Documentation

Quick Start

Run Server

# Start on default port 9090
server

# Custom port
server --port 8080

Use with GCP SDK

package main

import (
    "context"
    secretmanager "cloud.google.com/go/secretmanager/apiv1"
    "google.golang.org/api/option"
    "google.golang.org/grpc"
    "google.golang.org/grpc/credentials/insecure"
)

func main() {
    ctx := context.Background()

    // Connect to emulator
    conn, _ := grpc.NewClient(
        "localhost:9090",
        grpc.WithTransportCredentials(insecure.NewCredentials()),
    )

    client, _ := secretmanager.NewClient(ctx, option.WithGRPCConn(conn))
    defer client.Close()

    // Use client normally - API is identical to real GCP
}

Docker

docker run -p 9090:9090 ghcr.io/blackwell-systems/gcp-secret-manager-emulator:v0.1.0

Full Changelog: https://github.com/blackwell-systems/gcp-secret-manager-emulator/compare/v0.1.0