You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This issue proposes a complete redesign of Vulcan's release process to eliminate manual steps, improve reliability, and implement modern CI/CD best practices. The current process requires significant manual intervention and is prone to human error.
Triggers on successful test suite OR published release
Publishes mitre/vulcan:latest on master pushes
Publishes mitre/vulcan:v2.x.x on release publication
Test Automation (.github/workflows/run-tests.yml)
Runs on PRs, pushes, draft releases
PostgreSQL + LDAP container testing
RSpec + RuboCop + Yarn lint
Current Pain Points (🔴 Issues)
Multiple Manual File Updates: Developer must update 4+ files for each release
VERSION file
package.json version
README.md latest release section
CHANGELOG.md entries
Version Sync Problems: Files easily get out of sync
Manual Changelog: No automated changelog generation
Semantic Versioning Gaps: Only auto-increments patch versions
Release Notes Manual: Completely manual process
No Pre-release Testing: No automated staging deployment validation
Fixed Schedule: 14-day schedule doesn't align with development pace
🎯 Proposed Solution: Complete Release Process Redesign
Design Principles
Zero Manual File Updates - All version bumps automated
Conventional Commits Driven - Release decisions based on commit analysis
Multi-Environment Validation - Staging → Production pipeline
Rollback Ready - Quick recovery from failed releases
Container-First - Modern deployment patterns
Security-First - Automated vulnerability scanning
Architecture Overview
graph TD
A[Developer Commit] --> B[Commit Analysis]
B --> C{Should Release?}
C -->|Yes| D[Version Management]
C -->|No| E[Wait for more commits]
D --> F[Build & Test]
F --> G[Security Scanning]
G --> H[Build Artifacts]
H --> I[Deploy Staging]
I --> J[Staging Validation]
J --> K[Manual Approval Gate]
K --> L[Create GitHub Release]
L --> M[Deploy Production]
M --> N[Post-deployment Validation]
N --> O[Notify Stakeholders]
P[Emergency Rollback] -.-> M
Loading
🚀 Implementation Plan
Phase 1: Foundation (Week 1-2)
Implement conventional commit standards
Create automated version management workflow
Add semantic-release integration
Automated changelog generation
Phase 2: Enhanced Validation (Week 3-4)
Multi-stage validation pipeline
Automated security scanning
Container vulnerability assessment
Build artifact validation
Phase 3: Deployment Pipeline (Week 5-6)
Staging deployment automation
Integration test validation
Manual approval gates
Production deployment automation
Phase 4: Monitoring & Recovery (Week 7-8)
Post-deployment validation
Stakeholder notifications
Emergency rollback system
Incident management integration
📝 Detailed Implementation
1. Conventional Commit Standards
Implement standardized commit message format:
feat: add OIDC auto-discovery (#672) # → Minor version bump
fix: resolve LDAP authentication issue (#669) # → Patch version bump
feat!: migrate to rails-settings-cached # → Major version bump
docs: update installation guide # → No version bump
ci: update GitHub Actions versions # → No version bump
2. Automated Version Management
Create workflow to atomically update all version files:
# .github/workflows/version-management.ymlname: Automated Version Managementjobs:
version_bump:
runs-on: ubuntu-lateststeps:
- name: Update all version files atomicallyrun: | NEW_VERSION="${{ steps.version.outputs.new_version }}" # Update VERSION file echo "$NEW_VERSION" > VERSION # Update package.json jq ".version = \"${NEW_VERSION#v}\"" package.json > package.json.tmp mv package.json.tmp package.json # Update README.md latest release section sed -i "s/Latest Release: \[v[0-9]\+\.[0-9]\+\.[0-9]\+\]/Latest Release: [$NEW_VERSION]/" README.md # Update documentation find docs/ -name "*.yaml" -o -name "*.yml" | xargs sed -i "s/mitre\/vulcan:v[0-9]\+\.[0-9]\+\.[0-9]\+/mitre\/vulcan:$NEW_VERSION/g"
Modernize Vulcan Release Process: Complete Automation & CI/CD Pipeline
📋 Overview
This issue proposes a complete redesign of Vulcan's release process to eliminate manual steps, improve reliability, and implement modern CI/CD best practices. The current process requires significant manual intervention and is prone to human error.
🔍 Current State Analysis
Existing Release Workflow
Based on Wiki: Releasing Vulcan:
Current Automation (✅ Working)
Draft Release Creation (
.github/workflows/create-draft-release.yml)Docker Publishing (
.github/workflows/push-to-docker.yml)mitre/vulcan:lateston master pushesmitre/vulcan:v2.x.xon release publicationTest Automation (
.github/workflows/run-tests.yml)Current Pain Points (🔴 Issues)
Multiple Manual File Updates: Developer must update 4+ files for each release
VERSIONfilepackage.jsonversionREADME.mdlatest release sectionCHANGELOG.mdentriesVersion Sync Problems: Files easily get out of sync
Manual Changelog: No automated changelog generation
Semantic Versioning Gaps: Only auto-increments patch versions
Release Notes Manual: Completely manual process
No Pre-release Testing: No automated staging deployment validation
Fixed Schedule: 14-day schedule doesn't align with development pace
🎯 Proposed Solution: Complete Release Process Redesign
Design Principles
Architecture Overview
graph TD A[Developer Commit] --> B[Commit Analysis] B --> C{Should Release?} C -->|Yes| D[Version Management] C -->|No| E[Wait for more commits] D --> F[Build & Test] F --> G[Security Scanning] G --> H[Build Artifacts] H --> I[Deploy Staging] I --> J[Staging Validation] J --> K[Manual Approval Gate] K --> L[Create GitHub Release] L --> M[Deploy Production] M --> N[Post-deployment Validation] N --> O[Notify Stakeholders] P[Emergency Rollback] -.-> M🚀 Implementation Plan
Phase 1: Foundation (Week 1-2)
Phase 2: Enhanced Validation (Week 3-4)
Phase 3: Deployment Pipeline (Week 5-6)
Phase 4: Monitoring & Recovery (Week 7-8)
📝 Detailed Implementation
1. Conventional Commit Standards
Implement standardized commit message format:
2. Automated Version Management
Create workflow to atomically update all version files:
3. Multi-Stage Validation Pipeline
4. Emergency Rollback System
📊 Expected Benefits
Automation Benefits
Developer Experience
git commit -m "feat: new feature"→ automatic releaseEnterprise Ready
Cost Savings
🔧 Required Tools & Dependencies
📅 Timeline
🎯 Success Criteria
📚 References
🏷️ Related Issues
Priority: Medium (after v2.2.0 settings migration)
Effort: Large (8 weeks)
Impact: High (major developer experience improvement)