Skip to content

Commit ead89b3

Browse files
committed
More concise and to the point
Signed-off-by: Scott Rigby <[email protected]>
1 parent 9a11baf commit ead89b3

File tree

1 file changed

+34
-234
lines changed

1 file changed

+34
-234
lines changed

hips/hip-9999.md

Lines changed: 34 additions & 234 deletions
Original file line numberDiff line numberDiff line change
@@ -9,198 +9,20 @@ status: "draft"
99

1010
## Abstract
1111

12-
This HIP proposes automating significant portions of the Helm release process through GitHub Actions workflows while maintaining human oversight and security. The proposal introduces pull request-based automation for version updates, release candidate generation, documentation synchronization, and cross-repository coordination between helm/helm and helm/helm-www. The automation preserves the current manual review checkpoints while eliminating error-prone repetitive tasks, reducing release cycle time, and improving consistency.
12+
This HIP proposes automating the Helm release process through GitHub Actions while maintaining human review gates. The automation transforms the current 11-step manual checklist into a three-click process: trigger preparation, publish draft, merge docs PR. All changes flow through pull request reviews, preserving security while eliminating repetitive tasks.
1313

1414
## Motivation
1515

16-
The current Helm release process, documented in the [Release Checklist](https://github.com/helm/helm-www/blob/main/content/en/docs/community/release_checklist.md), involves 11 manual steps requiring maintainers to:
16+
The current 11-step [Release Checklist](https://github.com/helm/helm-www/blob/main/content/en/docs/community/release_checklist.md) requires manual coordination across helm/helm and helm/helm-www repositories, leading to human error, time consumption, and documentation delays. This automation preserves human judgment while eliminating repetitive tasks.
1717

18-
- Manually edit multiple files across different repositories
19-
- Coordinate updates between helm/helm and helm/helm-www repositories
20-
- Perform repetitive version string replacements in test files
21-
- Manually manage GitHub milestones and releases
22-
- Switch between multiple repository contexts during a single release
18+
## Design Principles
2319

24-
This manual process introduces several problems:
20+
- **Human Review Gates**: All changes require PR approval before implementation
21+
- **Draft Releases**: Created for review before triggering documentation updates
22+
- **Security Preserved**: Maintains signed commits and GPG signatures
23+
- **Fallback Ready**: Manual process remains fully functional
2524

26-
1. **Human Error**: Manual file editing leads to version mismatches and missed updates
27-
2. **Time Consumption**: Maintainers spend significant time on repetitive tasks
28-
3. **Context Switching**: Managing two repositories simultaneously increases cognitive load
29-
4. **Inconsistency**: Manual processes vary between different release managers
30-
5. **Bottlenecks**: Only maintainers familiar with the entire process can perform releases
31-
6. **Delayed Documentation**: Website updates often lag behind releases
32-
33-
The existing process works but does not scale efficiently with Helm's release cadence and growing maintainer team.
34-
35-
## Rationale
36-
37-
### Design Principles
38-
39-
1. **Human Review Preserved**: All automation presents changes as pull requests requiring maintainer approval
40-
2. **Security First**: No bypass of existing security measures (signed commits, GPG signatures)
41-
3. **Draft Mode**: Automated releases created in draft mode for final human review
42-
4. **Incremental Adoption**: Can be implemented and rolled out progressively
43-
5. **Rollback Capability**: Easy to revert to manual process if needed
44-
45-
### Alternative Approaches Considered
46-
47-
**Full Automation**: Rejected because it removes necessary human judgment for release timing, quality assessment, and community communication.
48-
49-
**External Tools**: Considered tools like Release Drafter, but they lack the cross-repository coordination and Helm-specific requirements.
50-
51-
**Monolithic Workflow**: Rejected in favor of modular workflows that can be maintained and debugged independently.
52-
53-
## Specification
54-
55-
### Workflow Architecture
56-
57-
#### 1. Release Preparation Workflow (`helm/helm`)
58-
59-
**Trigger**: Manual workflow dispatch with inputs:
60-
- Release type (major/minor/patch)
61-
- Target version (e.g., v3.20.0)
62-
- Release date
63-
64-
**Actions**:
65-
1. Create release branch from main
66-
2. Update version in `internal/version/version.go`
67-
3. Update all test data files with new version
68-
4. Generate release notes template using commit history
69-
5. Create/update GitHub milestone
70-
6. Create pull request with all changes
71-
72-
**Artifacts**: Pull request ready for maintainer review
73-
74-
#### 2. Release Candidate Workflow (`helm/helm`)
75-
76-
**Trigger**: Merge of release preparation PR
77-
78-
**Actions**:
79-
1. Create signed, annotated git tag for RC
80-
2. Trigger existing CI/CD for artifact building
81-
3. Create draft GitHub release with RC tag
82-
4. Generate and attach PGP signatures (if signing key available)
83-
5. Post notification to configured channels
84-
85-
**Artifacts**: Draft GitHub release with RC artifacts
86-
87-
#### 3. Final Release Workflow (`helm/helm`)
88-
89-
**Trigger**: Manual approval/publication of RC draft release
90-
91-
**Actions**:
92-
1. Create signed, annotated final release tag
93-
2. Update draft release to final
94-
3. Trigger documentation update workflow
95-
4. Close milestone
96-
5. Generate community announcement template
97-
98-
#### 4. Documentation Update Workflow (`helm/helm-www`)
99-
100-
**Trigger**: Webhook from helm/helm final release publication
101-
102-
**Actions**:
103-
1. Update `config.toml` with new version information
104-
2. Update `params.nextversion` with next planned release
105-
3. Update version skew documentation
106-
4. Update release calendar with next release dates
107-
5. Create pull request in helm/helm-www
108-
109-
**Artifacts**: Pull request in helm/helm-www ready for review
110-
111-
### File Structure
112-
113-
```
114-
.github/workflows/
115-
├── prepare-release.yml # Release preparation automation
116-
├── release-candidate.yml # RC creation and management
117-
├── finalize-release.yml # Final release publication
118-
└── update-documentation.yml # Cross-repo docs updates
119-
120-
scripts/
121-
├── update-version-files.sh # Version update automation
122-
├── generate-release-notes.sh # Release notes generation
123-
└── update-test-data.sh # Test file version updates
124-
```
125-
126-
### Configuration
127-
128-
New configuration file `.github/release-config.yml`:
129-
130-
```yaml
131-
# Release automation configuration
132-
version_files:
133-
- path: "internal/version/version.go"
134-
pattern: 'version = "v{VERSION}"'
135-
- path: "cmd/helm/testdata/output/version.txt"
136-
pattern: 'Version:"{VERSION}"'
137-
# ... additional files
138-
139-
repositories:
140-
docs_repo: "helm/helm-www"
141-
142-
signing:
143-
gpg_key_id: "${{ secrets.GPG_KEY_ID }}"
144-
gpg_private_key: "${{ secrets.GPG_PRIVATE_KEY }}"
145-
```
146-
147-
### Permissions and Security
148-
149-
Required GitHub App permissions:
150-
- Contents: Write (for creating branches, tags, releases)
151-
- Pull Requests: Write (for creating PRs)
152-
- Metadata: Read (for accessing repository info)
153-
- Actions: Write (for triggering cross-repo workflows)
154-
155-
Required secrets:
156-
- `GITHUB_APP_ID`: GitHub App ID for cross-repo access
157-
- `GITHUB_APP_PRIVATE_KEY`: GitHub App private key
158-
- `GPG_PRIVATE_KEY`: PGP signing key (optional)
159-
160-
## Backwards Compatibility
161-
162-
This proposal introduces new automation alongside the existing manual process:
163-
164-
1. **Graceful Rollback**: Manual process remains fully functional if automation fails
165-
2. **Opt-in Adoption**: Teams can choose to use automation for specific steps
166-
3. **No Breaking Changes**: No modifications to existing release artifacts or tags
167-
4. **Existing Tool Compatibility**: All existing tooling continues to work unchanged
168-
169-
The automation enhances rather than replaces the current process, ensuring maintainers can fall back to manual steps if needed.
170-
171-
## Security Implications
172-
173-
### Enhanced Security
174-
175-
1. **Consistent Process**: Automation reduces risk of human error in security-critical steps
176-
2. **Audit Trail**: All changes tracked through GitHub PR system
177-
3. **Access Control**: GitHub App permissions more restrictive than individual maintainer access
178-
4. **Signed Commits**: Automation maintains commit signing requirements
179-
180-
### Security Considerations
181-
182-
1. **Secret Management**: GPG keys and tokens stored in GitHub Secrets
183-
2. **Cross-Repo Access**: GitHub App tokens limited to minimum required permissions
184-
3. **Draft Mode**: All releases created in draft mode, requiring manual publication
185-
4. **Approval Gates**: All changes require PR approval before implementation
186-
187-
## How to Teach This
188-
189-
### Maintainer Documentation
190-
191-
1. Update existing release checklist with automation options
192-
2. Create troubleshooting guide for automation failures
193-
3. Document rollback procedures
194-
4. Provide workflow customization examples
195-
196-
### Training Materials
197-
198-
1. Video walkthrough of automated release process
199-
2. Comparison guide: manual vs. automated steps
200-
3. Emergency procedures documentation
201-
4. FAQ for common automation issues
202-
203-
## Reference Implementation
25+
## Automation Flow
20426

20527
### Workflow Process
20628

@@ -257,59 +79,37 @@ Example completion status:
25779
- [ ] GitHub milestone management
25880
- [ ] Release artifact attachment
25981

260-
### Corresponding Helm Workflow Plan
261-
262-
**helm/helm repository:**
263-
- `.github/workflows/prepare-release.yml` - Creates preparation branch and PR with version updates
264-
- `.github/workflows/trigger-release.yml` - Triggers release creation when prep PR merges
265-
- `.github/workflows/create-release.yml` - Creates release branch, tag, and draft release
266-
- `scripts/update-version.sh` - Updates version strings in code and test files
267-
- `scripts/generate-release-notes.sh` - Generates release notes template from git history
268-
269-
**helm/helm-www repository:**
270-
- `.github/workflows/update-version.yml` - Creates PR to update website configuration
271-
- `.github/workflows/manual-update-docs.yml` - Manual fallback for docs updates
272-
273-
### Key Implementation Details
274-
275-
**Cross-repository communication** uses GitHub's `repository_dispatch` event to trigger the helm-www workflow when a helm/helm release is published. This requires a `HELM_RELEASE_TOKEN` secret with cross-repository access.
276-
277-
**Version file updates** use sed pattern matching to find and replace version strings across multiple file types, handling both semantic version formats and Go version variables.
278-
279-
**Pull request automation** leverages GitHub CLI (`gh`) to create PRs with proper titles and generated content, ensuring all changes go through standard review processes.
280-
281-
The implementation handles the three primary release types (major/minor/patch) through a single workflow with input parameters, automatically extracting version information and creating appropriate branch names.
282-
283-
## Rejected Ideas
284-
285-
### Fully Automated Releases
286-
287-
Rejected because release timing requires human judgment based on:
288-
- Community feedback on release candidates
289-
- Critical bug discovery during testing
290-
- External factors (holidays, conferences, security issues)
291-
292-
### Slack/Discord Bot Interface
82+
### File Structure
29383

294-
While potentially useful, adds complexity and another system to maintain. GitHub's existing interfaces provide sufficient control.
84+
```
85+
helm/helm/
86+
├── .github/workflows/
87+
│ ├── prepare-release.yml # Manual trigger, creates PR with version updates
88+
│ ├── trigger-release.yml # Auto trigger on PR merge
89+
│ └── create-release.yml # Creates release branch, tag, and draft release
90+
└── scripts/
91+
├── update-version.sh # Updates version strings in code and test files
92+
└── generate-release-notes.sh # Release notes template from git history
93+
94+
helm/helm-www/
95+
└── .github/workflows/
96+
├── update-version.yml # Creates PR to update website configuration
97+
└── manual-update-docs.yml # Manual fallback for docs updates
98+
```
29599

296-
### Automatic Backporting
100+
**Key mechanisms:**
101+
- Cross-repository communication via `repository_dispatch` events
102+
- Draft releases created for human review before docs automation triggers
103+
- Persistent release branches for patch release support
104+
- All changes flow through pull request reviews
297105

298-
Patch release cherry-picking requires human judgment for:
299-
- Risk assessment of changes
300-
- Conflict resolution
301-
- Testing scope determination
106+
## Security & Compatibility
302107

303-
## Open Issues
108+
**Backwards Compatibility**: Manual process remains fully functional as fallback. No changes to existing release artifacts or tooling.
304109

305-
1. **GPG Key Management**: Best practices for storing and rotating signing keys in CI
306-
2. **Cross-Org Coordination**: Technical approach for coordinating releases with other CNCF projects
307-
3. **Rollback Testing**: Comprehensive testing scenarios for automation failures
308-
4. **Metrics Collection**: Tracking automation success rates and time savings
110+
**Security**: All releases created in draft mode requiring manual publication. GPG signing and commit signing preserved. Cross-repo access via fine-grained Personal Access Token with minimal permissions.
309111

310112
## References
311113

312-
1. [Current Release Checklist](https://github.com/helm/helm-www/blob/main/content/en/docs/community/release_checklist.md)
313-
2. [GitHub Actions Documentation](https://docs.github.com/en/actions)
314-
3. [Semantic Versioning](https://semver.org/)
315-
4. [GitHub Apps Documentation](https://docs.github.com/en/developers/apps)
114+
- [Current Release Checklist](https://github.com/helm/helm-www/blob/main/content/en/docs/community/release_checklist.md)
115+
- [Working Examples](https://github.com/scottrigby/example-actions-autorelease-source)

0 commit comments

Comments
 (0)