Release Guide
This document describes how to create releases for the Splunk AI Operator.
Overview
Releases are fully automated via GitHub Actions. You create releases from the GitHub UI without needing local git commands.
Quick Start
- Go to: Create Release Tag Workflow
- Click “Run workflow”
- Enter version (e.g.,
0.1.0 for first release, 0.2.0 for next)
- Click “Run workflow”
- Wait ~10 minutes - Release created automatically!
Release Process
Step 1: Prepare for Release
Pre-Release Checklist:
Step 2: Create Release Tag
- Navigate to Create Release Tag
- Click “Run workflow” button (top right)
- Fill in:
- Use workflow from:
main (default)
- Release version:
0.1.0 (without ‘v’ prefix, it’s added automatically)
- Mark as pre-release: Check for beta/rc releases
- Click “Run workflow”
Step 3: Monitor Workflows
Two workflows run automatically:
1. Create Release Tag (~30 seconds)
- Validates version format
- Creates git tag
v0.1.0
- Pushes tag to GitHub
2. Release Package (~5-10 minutes)
- Generates Kubernetes manifests
- Packages Helm charts
- Pushes charts to OCI registry (GHCR)
- Builds and pushes Docker images
- Creates GitHub Release with artifacts
Monitor at:
Step 4: Verify Release
After workflows complete:
1. Check GitHub Release:
https://github.com/splunk/splunk-ai-operator/releases
Verify assets:
install-v0.1.0.yaml - Kubernetes manifests
splunk-ai-operator-0.1.0.tgz - Helm chart
splunk-ai-platform-0.1.0.tgz - Platform chart
index.yaml - Helm repository index
2. Check OCI Registry:
# Verify chart is available
helm show chart oci://ghcr.io/splunk/charts/splunk-ai-operator --version 0.1.0
3. Check Docker Images:
- GHCR: https://github.com/splunk/splunk-ai-operator/pkgs/container/splunk-ai-operator
- Docker Hub: https://hub.docker.com/r/splunk/splunk-ai-operator
4. Test Installation:
# Test kubectl
kubectl apply -f https://github.com/splunk/splunk-ai-operator/releases/download/v0.1.0/install-v0.1.0.yaml
# Test Helm OCI
helm install test-release oci://ghcr.io/splunk/charts/splunk-ai-operator --version 0.1.0
# Test Docker
docker pull ghcr.io/splunk/splunk-ai-operator:v0.1.0
We follow Semantic Versioning 2.0.0:
Examples:
0.1.0 - First release
0.2.0 - Second release with new features
0.1.1 - Patch release
1.0.0 - GA release (when ready)
0.2.0-beta.1 - Pre-release
1.0.0-rc.1 - Release candidate
When to Increment
MAJOR (X.0.0):
- Breaking API changes
- Incompatible CRD schema changes
- Removal of deprecated features
MINOR (0.Y.0):
- New features (backward compatible)
- New CRD fields (with defaults)
- Feature deprecations (with warnings)
PATCH (0.0.Z):
- Bug fixes
- Documentation updates
- Security patches (non-breaking)
PRERELEASE (-suffix):
-alpha.N - Early testing
-beta.N - Feature complete
-rc.N - Release candidate
What Gets Released
Artifacts Published
When you release v0.1.0, the automation creates:
1. Kubernetes Manifests
Contains:
- All CRDs (AIPlatform, AIService)
- Operator deployment
- RBAC (ServiceAccount, ClusterRole, etc.)
- Webhooks configuration
- Cert-manager certificates
2. Helm Charts (OCI Registry)
oci://ghcr.io/splunk/charts/splunk-ai-operator:0.1.0
oci://ghcr.io/splunk/charts/splunk-ai-platform:0.1.0
3. Helm Charts (GitHub Release)
splunk-ai-operator-0.1.0.tgz
splunk-ai-platform-0.1.0.tgz
index.yaml
4. Docker Images
ghcr.io/splunk/splunk-ai-operator:v0.1.0
ghcr.io/splunk/splunk-ai-operator:0.1.0
ghcr.io/splunk/splunk-ai-operator:latest (if on main)
splunk/splunk-ai-operator:v0.1.0
splunk/splunk-ai-operator:0.1.0
splunk/splunk-ai-operator:latest (if on main)
Installation Methods
Users can install via:
1. kubectl (Manifests):
kubectl apply -f https://github.com/splunk/splunk-ai-operator/releases/download/v0.1.0/install-v0.1.0.yaml
2. Helm OCI (Recommended):
helm install splunk-ai-operator \
oci://ghcr.io/splunk/charts/splunk-ai-operator \
--version 0.1.0
3. Helm (GitHub Release):
helm install splunk-ai-operator \
https://github.com/splunk/splunk-ai-operator/releases/download/v0.1.0/splunk-ai-operator-0.1.0.tgz
Hotfix Releases
For critical bug fixes:
Process
- Merge hotfix PR to
main
- Create patch release:
1.0.1 (increment PATCH version)
- Follow normal release process
- Communicate to users via GitHub Release notes
Example
If v0.1.0 has a critical bug:
- Fix merged to
main
- Create release:
0.1.1
- Release notes should highlight:
- What was fixed
- Impact of the bug
- Upgrade instructions
Pre-releases
For testing before GA release:
Beta Release
Version: 0.2.0-beta.1
Pre-release: ✅ (checked)
Use cases:
- Testing new features
- Getting community feedback
- Validating changes before GA
Release Candidate
Version: 1.0.0-rc.1
Pre-release: ✅ (checked)
Use cases:
- Final testing before release
- No new features, only bug fixes
- Production-like testing
Troubleshooting
Tag Already Exists
Error:
❌ Tag v0.1.0 already exists
Solution:
- Choose different version, or
- Delete existing tag (requires admin):
git push --delete origin v0.1.0
- Delete GitHub Release if it exists
Workflow Failed
Check logs:
- Go to Actions
- Find failed workflow
- Check error messages
Common issues:
- Docker Hub auth: Check
DOCKERHUB_USERNAME and DOCKERHUB_TOKEN secrets
- Tests failing: Fix tests on
main before releasing
- Image build failure: Check Dockerfile and build logs
Images Not Appearing
Check:
- Workflow completed successfully
- GHCR: May take 5-10 minutes to appear
- Docker Hub: Check authentication secrets
- Visibility: Ensure packages are public
Charts Not in OCI Registry
Verify:
# This should work
helm show chart oci://ghcr.io/splunk/charts/splunk-ai-operator --version 0.1.0
If not:
- Check workflow logs for OCI push step
- Verify GHCR authentication
- Check package visibility settings
Post-Release
Required Actions
After release is published:
- Announcement
- Update project communication channels
- Post on relevant forums/discussions
- Documentation
- Update docs if needed
- Add migration guides for breaking changes
- Monitoring
- Watch for issues
- Monitor downloads/usage
- Respond to user feedback
First Release Setup (One-Time)
For the very first release (v0.1.0):
- Make GHCR packages public:
- Go to: https://github.com/orgs/splunk/packages
- Find:
splunk-ai-operator and charts/splunk-ai-operator
- Settings → Change visibility → Public
- Register on Artifact Hub:
- Go to: https://artifacthub.io/
- Sign in with GitHub
- Add repository:
oci://ghcr.io/splunk/charts
- Charts will be discoverable
- Verify Docker Hub:
- Check: https://hub.docker.com/r/splunk/splunk-ai-operator
- Images should appear automatically
Security
Secrets Required
Repository secrets needed:
DOCKERHUB_USERNAME - Docker Hub username
DOCKERHUB_TOKEN - Docker Hub access token
GITHUB_TOKEN - Provided automatically by GitHub Actions
Supply Chain Security
Each release includes:
- ✅ SLSA provenance attestation
- ✅ Signed artifacts
- ✅ Vulnerability scanning results
- ✅ SBOM (Software Bill of Materials)
View security info:
https://github.com/splunk/splunk-ai-operator/security
Best Practices
Versioning
- ✅ Use semantic versioning strictly
- ✅ Document breaking changes clearly
- ✅ Test pre-releases before GA
- ✅ Don’t skip versions
- ✅ Tag from
main branch only
Release Notes
- ✅ Highlight key features/fixes
- ✅ Document breaking changes
- ✅ Include upgrade instructions
- ✅ Link to relevant PRs/issues
- ✅ Thank contributors
Testing
Before releasing:
- ✅ All tests pass on
main
- ✅ Manual testing completed
- ✅ Documentation updated
- ✅ No known critical bugs
Support
Getting Help
- Issues: https://github.com/splunk/splunk-ai-operator/issues
- Discussions: https://github.com/splunk/splunk-ai-operator/discussions
- Documentation: https://github.com/splunk/splunk-ai-operator/tree/main/docs
Release Team
Contact maintainers for:
- Release access issues
- Secret management
- Emergency hotfixes