Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
bf0cfe7
fix: align action inputs with pipeline flags
jbdevprimary Jun 10, 2026
310fe27
fix: preserve pipeline errors in exit-code mode
jbdevprimary Jun 10, 2026
9477377
fix: align continue-on-error defaults
jbdevprimary Jun 10, 2026
ce2dc1c
docs: align secrets-sync standalone release docs
jbdevprimary Jun 10, 2026
d1636d8
fix: emit stable pipeline json envelope
jbdevprimary Jun 10, 2026
50e4f11
docs: align secrets-sync release guidance
jbdevprimary Jun 10, 2026
bd6dbfa
ci: avoid persisted checkout credentials
jbdevprimary Jun 10, 2026
c074203
fix: clear go vulnerability findings
jbdevprimary Jun 10, 2026
fc24399
fix: remove single OU discovery alias
jbdevprimary Jun 10, 2026
2582b83
docs: remove stale compatibility shapes
jbdevprimary Jun 10, 2026
a542296
test: guard removed organizations ou shape
jbdevprimary Jun 10, 2026
5462288
test: enforce workflow action sha pins
jbdevprimary Jun 10, 2026
fe231ac
fix: avoid raw client and secret logs
jbdevprimary Jun 10, 2026
5bee28b
fix: lock pipeline error exit precedence
jbdevprimary Jun 10, 2026
032516d
docs: document logging safety contract
jbdevprimary Jun 10, 2026
e4fff3a
refactor: remove vss compatibility alias
jbdevprimary Jun 10, 2026
0cee5d0
refactor: align helm crd with secretsync api
jbdevprimary Jun 10, 2026
ff210d7
docs: remove fork-era security and migration residue
jbdevprimary Jun 10, 2026
3d48d1c
docs: align security support with current major
jbdevprimary Jun 10, 2026
15dff27
docs: align roadmap with current major
jbdevprimary Jun 10, 2026
e233f75
docs: remove stale roadmap version phrase
jbdevprimary Jun 10, 2026
052f9ca
test: guard release note product casing
jbdevprimary Jun 10, 2026
3a124b8
fix: address secrets sync review hygiene
jbdevprimary Jun 10, 2026
1b1c8d5
docs: remove stale v1 feature labels
jbdevprimary Jun 10, 2026
1ab251d
test: guard action input docs
jbdevprimary Jun 10, 2026
42f7445
test: guard workflow pin documentation
jbdevprimary Jun 10, 2026
9cdd047
docs: remove fork-era usage examples
jbdevprimary Jun 10, 2026
c1b69f7
docs: refresh deployment guide for pipeline runner
jbdevprimary Jun 10, 2026
2e00681
docs: align getting started pipeline config
jbdevprimary Jun 10, 2026
b5912a0
fix: align kubernetes surface with pipeline runner
jbdevprimary Jun 10, 2026
8eb6f46
docs: align python integration with cli contract
jbdevprimary Jun 10, 2026
9c9bb09
docs: replace stale operator architecture
jbdevprimary Jun 10, 2026
ae4db35
docs: guard architecture audit paths
jbdevprimary Jun 10, 2026
abc88d5
docs: align contributing guide with current architecture
jbdevprimary Jun 10, 2026
360638c
docs: fix github directory links
jbdevprimary Jun 10, 2026
2889e23
fix: redact pipeline json diagnostics
jbdevprimary Jun 11, 2026
98c9f25
docs: document pipeline json redaction
jbdevprimary Jun 11, 2026
abcd623
fix: write action outputs with GITHUB_OUTPUT
jbdevprimary Jun 11, 2026
d660e25
fix: escape github annotation data
jbdevprimary Jun 11, 2026
c18bde8
docs: rename architecture audit
jbdevprimary Jun 11, 2026
f07f4eb
docs: link architecture audit
jbdevprimary Jun 11, 2026
f0ccc6f
test: pin documented third-party actions
jbdevprimary Jun 11, 2026
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
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,12 @@ jobs:
contents: read
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
with:
persist-credentials: false
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
cache-dependency-path: go.sum
- run: go run golang.org/x/vuln/cmd/govulncheck@v1.3.0 ./...
- run: go test ./...
- run: go build -o bin/secretsync ./cmd/secretsync
2 changes: 2 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@ jobs:
with:
ref: ${{ needs.release-please.outputs.tag_name }}
fetch-depth: 0
persist-credentials: false
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6.4.0
with:
go-version-file: go.mod
cache-dependency-path: go.sum
- run: go run golang.org/x/vuln/cmd/govulncheck@v1.3.0 ./...
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@5daf1e915a5f0af01ddbcd89a43b8061ff4f1a89 # v7.2.2
with:
Expand Down
19 changes: 7 additions & 12 deletions .goreleaser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,27 +94,22 @@ release:
prerelease: auto
mode: replace
header: |
## secretsync {{ .Tag }}
## SecretSync {{ .Tag }}

### Installation

**Docker:**
```bash
docker pull jbcom/secretssync:{{ .Version }}
```
**Binary:**
Download from the assets below for your platform.

**Helm (OCI):**
**Go install:**
```bash
helm install secretsync oci://registry-1.docker.io/jbcom/secretssync --version {{ .Version }}
go install github.com/jbcom/secrets-sync/cmd/secretsync@{{ .Tag }}
```

**Binary:**
Download from the assets below for your platform.

footer: |
---
**Full Changelog**: https://github.com/jbcom/secrets-sync/compare/{{ .PreviousTag }}...{{ .Tag }}

# Docker images and Helm charts are built/pushed separately
# via dedicated workflow jobs for better control
# Container and chart artifacts are outside this binary release workflow.
# Keep release notes limited to artifacts built here.
dockers: []
57 changes: 28 additions & 29 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,49 +206,47 @@ secretsync/
├── cmd/secretsync/ # CLI application
│ ├── cmd/ # Cobra commands
│ └── main.go # Entry point
├── pkg/ # Public packages
│ ├── pipeline/ # Pipeline orchestration
│ ├── diff/ # Diff computation
│ └── ...
├── stores/ # Secret store implementations
│ ├── vault/ # Vault store
│ ├── aws/ # AWS Secrets Manager
│ └── ...
├── internal/ # Private packages
├── pkg/
│ ├── client/ # Vault, AWS, and provider clients
│ ├── discovery/ # AWS Organizations and Identity Center discovery
│ ├── driver/ # Supported driver names and validation helpers
│ ├── pipeline/ # Merge, sync, graph, and execution orchestration
│ ├── diff/ # Diff computation and masking
│ └── observability/ # Metrics and request tracking
├── python/ # Optional gopy binding sources
├── docs/ # Documentation
├── examples/ # Example configurations
└── deploy/ # Deployment manifests
```

## Adding a New Secret Store
## Adding a New Secret Backend

To add support for a new secret store:
To add support for a new backend:

1. **Create store package**
1. **Create a client package**
```bash
mkdir -p stores/newstore
mkdir -p pkg/client/newbackend
```

2. **Implement Store interface**
2. **Implement the current client shape**
```go
package newstore
package newbackend

import "github.com/jbcom/secrets-sync/pkg/store"
import "github.com/jbcom/secrets-sync/pkg/driver"

type Store struct {
// configuration fields
type Client struct {
Name string `yaml:"name,omitempty" json:"name,omitempty"`
}

func (s *Store) Get(ctx context.Context, key string) ([]byte, error) {
// implementation
func (c *Client) Validate() error {
if c.Name == "" {
return driver.ErrPathRequired
}
return nil
}

func (s *Store) Set(ctx context.Context, key string, value []byte) error {
// implementation
}

func (s *Store) List(ctx context.Context, prefix string) ([]string, error) {
// implementation
func (c *Client) Driver() driver.DriverName {
return driver.DriverName("newbackend")
}
```

Expand All @@ -261,9 +259,10 @@ To add support for a new secret store:
}
```

4. **Register store**
- Update pipeline config to include new store
- Add store initialization logic
4. **Register the backend**
- Add the driver name in `pkg/driver`
- Update pipeline config types and validation
- Add client initialization logic in the pipeline layer
- Update documentation

5. **Add examples**
Expand Down
4 changes: 1 addition & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
# Tests now run in CI (outside Docker), so this Dockerfile focuses purely
# on compiling and packaging the runtime image.
###
FROM golang:1.25-trixie AS builder
FROM golang:1.26.4-trixie AS builder

ARG TARGETOS=linux
ARG TARGETARCH=amd64
Expand Down Expand Up @@ -59,8 +59,6 @@ WORKDIR /app
RUN mkdir -p /etc/ssl/certs
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
COPY --from=builder /out/secretsync /usr/local/bin/secretsync
# Keep vss as a symlink for backwards compatibility
RUN ln -s /usr/local/bin/secretsync /usr/local/bin/vss

# Default command - Viper reads SECRETSYNC_* env vars directly
ENTRYPOINT ["/usr/local/bin/secretsync"]
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ python-bindings:
@mkdir -p $(PYTHON_OUTPUT)
$(GOPY) pkg -output=$(PYTHON_OUTPUT) -vm=$(PYTHON) -name=$(PYTHON_PKG) \
-version=$(VERSION) \
-author="Extended Data Library" \
-email="support@extended-data.dev" \
-author="jbcom" \
-email="jon@jonbogaty.com" \
-url="https://github.com/jbcom/secrets-sync" \
-desc="Enterprise-grade secret synchronization pipeline with Python bindings" \
./python/secretssync
Expand Down
Loading