Skip to content

Commit 7f386b4

Browse files
busserclaude
andauthored
release: v0.7.0 (#492)
Add structured release process with organized release notes and automation: - Update GoReleaser config to v2 format - Add release and release-dry-run targets to Makefile - Create docs/release-notes directory structure - Update CLAUDE.md with comprehensive release documentation - Create v0.7.0 release notes highlighting public Go API - Update VERSION to v0.7.0 🤖 Generated with [Claude Code](https://claude.ai/code) Co-authored-by: Claude <noreply@anthropic.com>
1 parent dc671bc commit 7f386b4

File tree

5 files changed

+114
-12
lines changed

5 files changed

+114
-12
lines changed

.goreleaser.yaml

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,29 @@
1+
version: 2
2+
13
before:
24
hooks:
35
- go mod tidy
46

57
builds:
68
- id: murmur
79
binary: murmur
8-
env: [CGO_ENABLED=0]
9-
goos: [linux, windows, darwin]
10+
env:
11+
- CGO_ENABLED=0
12+
goos:
13+
- linux
14+
- windows
15+
- darwin
1016
main: ./
1117
# The project was renamed "murmur" in May 2023. For backwards compatibility,
1218
# we continue to publish artifacts named "whisper".
1319
- id: whisper
1420
binary: whisper
15-
env: [CGO_ENABLED=0]
16-
goos: [linux, windows, darwin]
21+
env:
22+
- CGO_ENABLED=0
23+
goos:
24+
- linux
25+
- windows
26+
- darwin
1727
main: ./
1828

1929
archives:
@@ -29,6 +39,9 @@ archives:
2939
format_overrides:
3040
- goos: windows
3141
format: zip
42+
files:
43+
- LICENSE
44+
- README.md
3245
# The project was renamed "murmur" in May 2023. For backwards compatibility,
3346
# we continue to publish artifacts named "whisper".
3447
- id: whisper
@@ -43,6 +56,9 @@ archives:
4356
format_overrides:
4457
- goos: windows
4558
format: zip
59+
files:
60+
- LICENSE
61+
- README.md
4662

4763
dockers:
4864
- id: murmur
@@ -70,15 +86,16 @@ dockers:
7086

7187
checksum:
7288
name_template: "checksums.txt"
89+
7390
snapshot:
74-
name_template: "{{ .Tag }}-next"
91+
version_template: "{{ .Tag }}-next"
92+
7593
changelog:
7694
sort: asc
7795
filters:
7896
exclude:
79-
- "^chore:"
80-
- '^chore\(deps\):'
8197
- "^docs:"
82-
- '^fix\(deps\):'
83-
- "^refactor:"
8498
- "^test:"
99+
100+
release:
101+
prerelease: auto

CLAUDE.md

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,43 @@ Murmur is a secrets injection tool that fetches secrets from various cloud provi
5252
- Unit tests alongside source files (`*_test.go`)
5353
- E2E tests require `-tags=e2e` flag and real cloud credentials
5454
- Mock providers available for testing (`providers/mock/`, `providers/jsonmock/`)
55-
- Test data in `pkg/murmur/testdata/`
55+
- Test data in `pkg/murmur/testdata/`
56+
57+
## Release Process
58+
59+
Murmur uses a structured release process with organized release notes and automated tooling.
60+
61+
### Release Commands
62+
63+
- **Release Dry Run**: `make release-dry-run` - Test the complete release process without publishing
64+
- **Release**: `make release` - Create and publish a new release (requires `gh` CLI authentication)
65+
66+
### Release Workflow
67+
68+
1. **Prepare Release Notes**: Create `docs/release-notes/vX.Y.Z.md` with comprehensive release notes
69+
2. **Create Release Branch**: `git checkout -b release/vX.Y.Z`
70+
3. **Update VERSION**: Change `VERSION` file to target version (e.g., `v0.7.0`)
71+
4. **Commit and PR**: `git commit -m "release vX.Y.Z"` and open PR
72+
5. **Merge and Release**: After PR merge, checkout main, pull, and run `make release`
73+
74+
### Release Notes Format
75+
76+
Release notes in `docs/release-notes/` follow this structure:
77+
- **Emoji-prefixed sections** (🔥, 📋, 📚, 🔧)
78+
- **Brief descriptions** with **code examples**
79+
- **Links to documentation** for detailed information
80+
- **User-focused language** highlighting benefits
81+
82+
### Automated Release Features
83+
84+
- **Multi-platform binaries**: Linux, macOS, Windows (amd64, arm64, 386)
85+
- **Container images**: Automatic Docker image publishing to GitHub Container Registry
86+
- **GitHub integration**: Automated release creation with binaries and checksums
87+
- **Release notes**: Automatically included from `docs/release-notes/$(VERSION).md`
88+
- **Backward compatibility**: Continues publishing both `murmur` and `whisper` binaries
89+
90+
### Dependencies
91+
92+
- **GoReleaser v2**: Handles cross-compilation and publishing
93+
- **GitHub CLI (`gh`)**: Provides authentication token for releases
94+
- **Git tags**: Version tags trigger GoReleaser's release process

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,4 +56,8 @@ build: fmt vet ## Build murmur binary.
5656
release: test ## Release a new version.
5757
git tag -a "$(VERSION)" -m "$(VERSION)"
5858
git push origin "$(VERSION)"
59-
goreleaser release --clean
59+
GITHUB_TOKEN=$$(gh auth token) goreleaser release --clean --release-notes=docs/release-notes/$(VERSION).md
60+
61+
.PHONY: release-dry-run
62+
release-dry-run: ## Test the release process without publishing.
63+
goreleaser release --snapshot --clean --skip=publish --release-notes=docs/release-notes/$(VERSION).md

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
v0.6.1
1+
v0.7.0

docs/release-notes/v0.7.0.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
## 🔥 Public Go API Available
2+
3+
Murmur's internals are now publicly accessible for Go library usage! All packages have been moved from `internal/` to `pkg/`, enabling other Go programs to import and use Murmur's components directly:
4+
5+
```go
6+
import "github.com/busser/murmur/pkg/murmur"
7+
8+
// Use the provider system directly
9+
providers := murmur.ProviderFactories
10+
awsProvider, _ := providers["awssm"]()
11+
12+
// Access the secret resolution pipeline
13+
secrets := map[string]string{
14+
"DB_PASSWORD": "awssm:my-database-secret",
15+
}
16+
resolved, _ := murmur.ResolveAll(secrets)
17+
```
18+
19+
This enables powerful use cases like:
20+
- **Configuration-based secret resolution** instead of environment variables
21+
- **Custom secret injection workflows** in Go applications
22+
- **Testing with mock providers** for unit tests
23+
- **Building custom secret management tools** on top of Murmur's provider system
24+
25+
All providers (AWS, Azure, GCP, Scaleway), filters (JSONPath), and core resolution logic are now available for library usage.
26+
27+
More details here: https://github.com/busser/murmur#go-library-usage
28+
29+
## 📚 Enhanced release process
30+
31+
Major improvements to Murmur's release tooling and documentation:
32+
33+
- **Structured release notes** - Organized release notes in `docs/release-notes/`
34+
- **GoReleaser v2** - Updated configuration for modern release tooling
35+
- **Release automation** - New `make release` and `make release-dry-run` targets
36+
- **Comprehensive documentation** - Detailed release process in CLAUDE.md
37+
38+
This establishes a robust foundation for future Murmur releases with better organization and automation.
39+
40+
## 🔧 Community contributions
41+
42+
Special thanks to @christianking-gitlab for identifying the need for library usage and contributing the initial implementation approach. This release addresses that need comprehensively while providing maximum flexibility for Go developers.

0 commit comments

Comments
 (0)