Skip to content

Audit and document release process end-to-end #589

@joshrotenberg

Description

@joshrotenberg

Background

The release process has grown to include multiple artifacts and destinations:

  • crates.io: redisctl, redis-cloud, redis-enterprise, redisctl-config libraries
  • GitHub Releases: Binary artifacts for multiple platforms
  • Homebrew: Formula updates
  • Docker Hub: Container images
  • PyPI: Python bindings (new)

The v0.7.6 release partially failed (Python bindings failed on macOS x86_64 due to pyo3 linking issues), indicating we need a comprehensive review.

Audit Scope

Workflow Files to Review

  • release-plz.yml - Release PR automation
  • release.yml - Main release (crates.io, GitHub releases, binaries)
  • docker.yml - Docker image publishing
  • python-publish.yml - Python bindings release

Questions to Answer

  1. What is the complete release flow from PR merge to all artifacts?
  2. What are the dependencies between workflows?
  3. What happens when one part fails (like Python bindings)?
  4. Should Python bindings failure block the main release?
  5. Are there race conditions or ordering issues?
  6. Is the Homebrew formula update working correctly?

Known Issues

  • v0.7.6 tag exists but no GitHub release was created
  • Python bindings failed on macOS x86_64 (pyo3 linking)
  • Need to verify crates.io publish succeeded for v0.7.6

Deliverable

Create a release process documentation file (e.g., docs/RELEASE_PROCESS.md or in mkdocs) that explains:

  1. Overview - High-level flow diagram or description
  2. Triggers - What kicks off each workflow and when
  3. Workflow Details - Step-by-step for each workflow
  4. Artifacts Produced - What gets published where
  5. Dependencies - Order of operations, what depends on what
  6. Failure Modes - What happens when X fails, how to recover
  7. Manual Steps - Anything that requires human intervention
  8. Troubleshooting - Common issues and fixes
  9. Verification - How to confirm a release succeeded

This document should serve as the reference when things break.

Tasks

  • Audit all workflow files
  • Document the complete release flow
  • Identify gaps and failure modes
  • Decide on Python bindings integration strategy
  • Fix any issues found (separate PRs)
  • Write the release process documentation

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions