diff --git a/RELEASES.md b/RELEASES.md deleted file mode 100644 index 7f8df39..0000000 --- a/RELEASES.md +++ /dev/null @@ -1,101 +0,0 @@ -# Release Process - -This document describes the automated release process for redisctl. - -## Overview - -The release process is fully automated using a combination of: -- **release-plz**: Manages versions, changelogs, crates.io publishing, and git tags -- **cargo-dist**: Builds platform binaries and creates GitHub releases -- **Docker workflow**: Publishes Docker images - -## Release Flow - -``` -1. Push commits to main - ↓ -2. release-plz workflow runs - - Analyzes conventional commits - - Creates PR with version bumps and changelog updates - ↓ -3. Review and merge PR - ↓ -4. release-plz publishes - - Publishes redis-cloud to crates.io - - Publishes redis-enterprise to crates.io - - Publishes redisctl to crates.io - - Creates git tag: redisctl-vX.Y.Z - ↓ -5. Tag triggers parallel workflows - ├─ cargo-dist (release.yml) - │ - Builds binaries for all platforms - │ - Creates GitHub release with binaries - │ - Updates Homebrew formula - │ - └─ Docker (docker.yml) - - Builds multi-arch Docker images - - Pushes to Docker Hub and GHCR -``` - -## Conventional Commits - -Use conventional commit format for automatic versioning: - -- `feat: description` → Minor version bump (0.X.0) -- `fix: description` → Patch version bump (0.0.X) -- `feat!: description` or `BREAKING CHANGE:` → Major version bump (X.0.0) -- `docs:`, `chore:`, `style:`, `refactor:`, `test:` → No version bump - -## Manual Intervention - -Normally, no manual intervention is needed. However, you can: - -### Skip Publishing for a Commit -Add `[skip ci]` to commit message to skip all CI workflows. - -### Manual Tag Creation (Emergency) -If you need to manually trigger a release: - -```bash -git tag redisctl-v0.6.3 -git push origin redisctl-v0.6.3 -``` - -This will trigger cargo-dist and Docker workflows but NOT crates.io publishing. - -## Workspace Version Management - -All three crates (redis-cloud, redis-enterprise, redisctl) share the same version number in the workspace. When release-plz creates a version bump: - -1. It updates the version in all three crate Cargo.toml files -2. It publishes all three crates to crates.io in dependency order -3. It creates a single tag for the redisctl version - -## Troubleshooting - -### Release PR not created -- Check that commits follow conventional commit format -- Verify GITHUB_TOKEN has write permissions -- Check release-plz workflow logs - -### Crates.io publish failed -- Verify CARGO_REGISTRY_TOKEN is valid -- Check that version doesn't already exist -- Ensure all tests pass - -### Binary builds failed -- Check cargo-dist workflow logs -- Verify all platforms build successfully -- Check for platform-specific dependencies - -### Docker build failed -- Verify DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets -- Check Dockerfile for syntax errors -- Ensure multi-arch build succeeds - -## Configuration Files - -- `release-plz.toml` - release-plz configuration -- `.github/workflows/release-plz.yml` - Version PR and crates.io publishing -- `.github/workflows/release.yml` - cargo-dist binary builds (autogenerated) -- `.github/workflows/docker.yml` - Docker image publishing