Skip to content

feat(ci): implement automated alpha→beta→stable release pipeline #92

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
May 27, 2025

Conversation

sidmohan0
Copy link
Contributor

Summary

Implements a comprehensive automated release pipeline with progressive quality gates:

  • Monday-Wednesday: Automated alpha builds (4.2.0a20241202.0830.abc123)
  • Thursday: Automated beta builds (4.2.0b1) with comprehensive testing
  • Friday: Manual stable releases (4.2.0) when ready

Key Features

🌙 Alpha Releases (Mon-Wed)

  • Automated nightly builds from dev branch at 2 AM UTC
  • Timestamped versioning with commit hash for traceability
  • Smart change detection - only builds when dev has new commits
  • Automatic cleanup of old alpha releases (keep last 7)

🚧 Beta Releases (Thu)

  • Consolidates week's alpha changes into stable pre-release
  • Comprehensive test suite validation before publish
  • Performance benchmark validation
  • Integration testing included

🚀 Stable Releases (Fri)

  • Manual trigger when ready for production
  • Clean semantic versioning (4.2.0)
  • Full changelog and social media ready

Technical Implementation

Workflows Added

  • .github/workflows/nightly-release.yml - Alpha builds (Mon-Wed)
  • .github/workflows/beta-release.yml - Beta builds (Thu)
  • Enhanced bump2version config for alpha/beta support

Version Strategy

  • Current: 4.1.1 (unchanged in code)
  • Target: 4.2.0 minor version bump for this release
  • Progression: 4.1.1 → 4.2.0a1 → 4.2.0b1 → 4.2.0

Quality Gates

Release Tests Performance Purpose
Alpha Basic Quick check Feature testing
Beta Full suite Benchmarks Final validation
Stable Complete Validated Production ready

Benefits

📈 Community Growth

  • 5x more releases per week drives GitHub activity
  • Early access builds encourage community engagement
  • Continuous feedback loop with users

🔄 Development Velocity

  • Rapid iteration with daily alpha feedback
  • Risk mitigation with progressive quality gates
  • Automated testing catches issues early

🎯 Release Confidence

  • Thursday beta provides final validation
  • Friday stable releases are pre-tested
  • Rollback strategies for emergency situations

Usage

For Contributors

# Development work as usual - automation handles releases
git checkout dev
git commit -m "feat: add new feature"
git push origin dev

# Alpha builds automatically on Mon-Wed
# Beta builds automatically on Thu
# Stable release manually triggered on Fri

For Users

# Try latest features (alpha)
pip install --pre datafog

# Test stable pre-release (beta)
pip install datafog==4.2.0b1

# Production use (stable)
pip install datafog==4.2.0

Test Plan

This Week (Dry Run Testing)

  • Monday: Test alpha workflow with dry_run=true
  • Wednesday: Validate alpha versioning and cleanup
  • Thursday: Test beta workflow with comprehensive tests
  • Friday: Execute real 4.2.0 stable release

Production Validation

  • Verify PyPI publishing works correctly
  • Confirm GitHub releases are created properly
  • Test rollback procedures
  • Validate cleanup of old releases

Files Changed

New Workflows

  • .github/workflows/nightly-release.yml - Mon-Wed alpha automation
  • .github/workflows/beta-release.yml - Thursday beta consolidation

Enhanced Configuration

  • .bumpversion.cfg - Added alpha/beta versioning support
  • .pre-commit-config.yaml - Excluded GitHub Actions from prettier

Documentation (Local)

  • docs/nightly-builds.md - Complete release cycle guide

Breaking Changes

None - this is purely additive infrastructure.

Next Steps

  1. Merge to dev branch
  2. Test workflows with dry runs this week
  3. Execute first 4.2.0 release cycle
  4. Monitor community engagement metrics

🤖 Generated with Claude Code

sidmohan0 and others added 6 commits May 26, 2025 18:38
Use !r conversion flag for __name__ and name variables in AttributeError
message as recommended by B907 rule.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Add automated nightly release workflow for dev branch
- Support alpha versioning with timestamp and commit hash
- Include smart change detection to skip empty builds
- Auto-cleanup old alpha releases (keep last 7)
- Update bump2version config for alpha support
- Add dry run and force build options for testing
- Exclude GitHub Actions YAML from prettier formatting
- Split nightly releases: Mon-Wed alpha, Thu beta, Fri stable
- Add dedicated beta release workflow with comprehensive testing
- Update bump2version config for both alpha and beta versioning
- Enhanced documentation with progressive release cycle guide
- Include rollback strategies and weekly calendar
- Add beta performance validation and cleanup
- Update alpha/beta workflows to bump minor version (4.1.1 → 4.2.0)
- Configure progressive release cycle: 4.2.0a1 → 4.2.0b1 → 4.2.0
- Update documentation examples to reflect 4.2.0 target
- Enable testing of release infrastructure before Friday 4.2.0 release
- Fix multi-line Python code in version generation scripts
- Add missing outputs section to nightly-release job
- Consolidate Python version bump logic to single lines
- Ensure proper job output references for notifications
- Re-add yaml/yml to prettier files pattern
- Keep exclusion for GitHub Actions workflows
- Ensure prettier has files to process during pre-commit runs
@sidmohan0 sidmohan0 merged commit 8b02b4c into dev May 27, 2025
18 of 19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant