Files
git.stella-ops.org/docs/releases/RELEASE_PROCESS.md

256 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# StellaOps Release Process
This document describes the release process for StellaOps suite and module releases.
## Overview
StellaOps uses automated CI/CD pipelines for releases:
| Release Type | Workflow | Trigger |
|--------------|----------|---------|
| Module | `.gitea/workflows/module-publish.yml` | Tag or manual dispatch |
| Suite | `.gitea/workflows/release-suite.yml` | Tag or manual dispatch |
---
## Module Release Process
### Prerequisites
- [ ] All tests passing on main branch
- [ ] CHANGELOG.md updated with changes
- [ ] Version bumped in module's `version.txt` (if applicable)
- [ ] Breaking changes documented
### Steps
#### Option A: Tag-based Release
```bash
# Create and push tag
git tag module-authority-v1.2.3
git push origin module-authority-v1.2.3
```
The pipeline will automatically:
1. Parse module name and version from tag
2. Build the module
3. Publish NuGet package to Gitea registry
4. Build and push container image (if applicable)
#### Option B: Manual Dispatch
1. Navigate to **Actions** > **Module Publish**
2. Click **Run workflow**
3. Select:
- **Module**: e.g., `Authority`
- **Version**: e.g., `1.2.3`
- **Publish NuGet**: `true`
- **Publish Container**: `true`
4. Click **Run**
### Artifacts Published
| Artifact | Location |
|----------|----------|
| NuGet | `git.stella-ops.org/api/packages/stella-ops.org/nuget/index.json` |
| Container | `git.stella-ops.org/stella-ops.org/{module}:{version}` |
---
## Suite Release Process
### Prerequisites
- [ ] All module versions finalized
- [ ] Integration tests passing
- [ ] Security scan completed
- [ ] CHANGELOG.md updated
- [ ] Compatibility matrix documented
- [ ] Codename selected (see [codenames.md](codenames.md))
### Pre-Release Checklist
```markdown
- [ ] All P1 issues resolved
- [ ] Performance benchmarks meet SLOs
- [ ] Documentation updated
- [ ] Migration guide prepared
- [ ] Release notes drafted
- [ ] Security advisory review complete
- [ ] Air-gap bundle tested
- [ ] Helm chart validated
```
### Steps
#### Option A: Tag-based Release
```bash
# Create and push tag
git tag suite-2026.04-nova
git push origin suite-2026.04-nova
```
#### Option B: Manual Dispatch
1. Navigate to **Actions** > **Suite Release**
2. Click **Run workflow**
3. Fill in:
- **Version**: e.g., `2026.04`
- **Codename**: e.g., `Nova`
- **Channel**: `edge`, `stable`, or `lts`
- **Skip tests**: `false` (default)
- **Dry run**: `false` for actual release
4. Click **Run**
### Pipeline Stages
```
validate → test-gate → build-modules → build-containers
↘ ↓
build-cli → build-helm → release-manifest → create-release → summary
```
1. **Validate** - Check version format, resolve inputs
2. **Test Gate** - Run unit, architecture, and contract tests
3. **Build Modules** - Build all 9 modules (matrix)
4. **Build Containers** - Push container images (9 modules)
5. **Build CLI** - Build for 5 platforms
6. **Build Helm** - Package Helm chart
7. **Release Manifest** - Generate `suite-{version}.yaml`
8. **Create Release** - Create Gitea release with artifacts
9. **Summary** - Generate summary report
### Artifacts Published
| Artifact | Files |
|----------|-------|
| Container images | 9 modules × 3 tags (version, channel, latest) |
| CLI binaries | 5 platforms (linux-x64, linux-arm64, win-x64, osx-x64, osx-arm64) |
| Helm chart | `stellaops-{version}.tgz` |
| Release manifest | `suite-{version}.yaml` |
| Checksums | `SHA256SUMS-{version}.txt` |
---
## Release Channels
### Edge
- Pre-release builds
- May contain experimental features
- Not recommended for production
- Triggered by: `channel: edge` or tag without `-stable`/`-lts`
### Stable
- Production-ready releases
- Thoroughly tested
- 9 months of support (feature releases)
- Triggered by: `channel: stable`
### LTS (Long Term Support)
- April releases only (XX.04)
- 5 years of security updates
- 3 years of standard support
- Triggered by: `channel: lts`
---
## Rollback Procedures
### Container Rollback
```bash
# Pull previous version
docker pull git.stella-ops.org/stella-ops.org/authority:2025.10
# Update deployment
kubectl set image deployment/authority authority=git.stella-ops.org/stella-ops.org/authority:2025.10
```
### Helm Rollback
```bash
# List releases
helm history stellaops
# Rollback to previous revision
helm rollback stellaops 1
```
### Database Rollback
1. Stop all services
2. Restore database from backup
3. Deploy previous version
4. Verify data integrity
**Important**: Always test rollback procedures in staging before production.
---
## Hotfix Process
For critical security fixes:
1. Create hotfix branch from release tag
```bash
git checkout -b hotfix/2026.04.1 suite-2026.04
```
2. Apply fix and test
3. Tag hotfix release
```bash
git tag suite-2026.04.1
git push origin suite-2026.04.1
```
4. Cherry-pick fix to main branch
---
## Post-Release Tasks
- [ ] Verify artifacts in registry
- [ ] Update documentation site
- [ ] Send release announcement
- [ ] Update compatibility matrix
- [ ] Monitor for issues (24-48 hours)
- [ ] Update roadmap
---
## Troubleshooting
### Build Failures
1. Check test results in artifacts
2. Review workflow logs
3. Verify secrets are configured (GITEA_TOKEN)
### Push Failures
1. Verify registry authentication
2. Check network connectivity
3. Ensure no conflicting tags exist
### Common Issues
| Issue | Resolution |
|-------|------------|
| Tag already exists | Delete tag and recreate, or use next version |
| NuGet push fails | Check package already exists, use `--skip-duplicate` |
| Container push fails | Verify registry login, check image size limits |
---
## Related Documentation
- [Versioning Strategy](VERSIONING.md)
- [Codename Registry](codenames.md)
- [CI/CD Workflows](../../.gitea/workflows/)