Skip to content

Commit f9b5f82

Browse files
committed
release.md
1 parent 261d77a commit f9b5f82

File tree

1 file changed

+113
-4
lines changed

1 file changed

+113
-4
lines changed

RELEASE.md

Lines changed: 113 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,80 @@
22

33
This document covers the release process for ev-node components:
44

5+
- **GitHub Releases** - Manual workflow to create draft releases with AI-generated release notes
56
- **Docker Image Releases** - Automated via GitHub workflows (for deployable applications)
67
- **Go Module Releases** - Manual process for library packages and dependencies
78

89
---
910

11+
## GitHub Releases (Manual Workflow)
12+
13+
### When to Use
14+
15+
Create official GitHub releases with professionally formatted release notes for version tags.
16+
17+
### Quick Steps
18+
19+
```bash
20+
# 1. Ensure CHANGELOG.md is updated for the version
21+
# 2. Navigate to GitHub Actions
22+
# 3. Run "Github Release" workflow
23+
# 4. Enter tag (e.g., v1.2.3)
24+
# 5. Review and publish the draft release
25+
```
26+
27+
### How It Works
28+
29+
The GitHub Release workflow (`.github/workflows/release-github.yml`) automates release note generation:
30+
31+
1. **Validates Tag Format** - Ensures tag follows semantic versioning (e.g., `v1.2.3`, `v1.2.3-rc.4`)
32+
2. **Extracts Version Info** - Parses version from tag and finds previous release
33+
3. **Discovers Docker Images** - Lists all Docker images that will be included in the release
34+
4. **Generates Release Notes** - Uses Claude AI to read CHANGELOG.md and create professional release notes
35+
5. **Creates Draft Release** - Publishes a draft GitHub release for review
36+
37+
### Release Notes Structure
38+
39+
The workflow generates release notes with:
40+
41+
- **Summary** - Overview of the release type and upgrade recommendations
42+
- **Tested Upgrade Paths** - Version compatibility information
43+
- **Changelog Sections**:
44+
- Added (new features, with BREAKING changes highlighted)
45+
- Changed (modifications, with BREAKING changes highlighted)
46+
- Removed (deprecated features, with BREAKING changes highlighted)
47+
- Fixed (bug fixes)
48+
- **Docker Images** - List of all available Docker images for this release
49+
50+
### Requirements
51+
52+
- Tag must follow semantic versioning: `v<MAJOR>.<MINOR>.<PATCH>[-PRERELEASE][+BUILD]`
53+
- Valid: `v1.2.3`, `v1.2.3-rc.4`, `v1.2.3-beta.1`, `v1.2.3-alpha.1+build.123`
54+
- CHANGELOG.md must contain a section for the version being released
55+
- `CLAUDE_CODE_OAUTH_TOKEN` secret must be configured in repository settings
56+
57+
### Workflow Dispatch
58+
59+
To trigger the workflow:
60+
61+
1. Go to **GitHub → Actions → Github Release**
62+
2. Click **Run workflow**
63+
3. Enter the release tag (e.g., `v1.2.3`)
64+
4. Click **Run workflow**
65+
66+
The workflow will create a **draft release** that you can review and edit before publishing.
67+
68+
### Best Practices
69+
70+
- ✅ Update CHANGELOG.md before running the workflow
71+
- ✅ Use clear, descriptive changelog entries
72+
- ✅ Mark breaking changes explicitly in CHANGELOG.md
73+
- ✅ Review the draft release before publishing
74+
- ✅ Test upgrade paths and update release notes accordingly
75+
- ✅ Ensure all Docker images are built and available
76+
77+
---
78+
1079
## Docker Image Releases (Automated)
1180

1281
### When to Use
@@ -182,15 +251,29 @@ go list -m github.com/evstack/ev-node/apps/evm@v0.3.0
182251

183252
## Common Release Scenarios
184253

185-
### Scenario 1: Release Single App (Docker Only)
254+
### Scenario 1: Create GitHub Release
255+
256+
```bash
257+
# 1. Update CHANGELOG.md with version changes
258+
# 2. Commit and push changes
259+
git add CHANGELOG.md
260+
git commit -m "Update changelog for v1.2.3"
261+
git push origin main
262+
263+
# 3. Go to GitHub Actions → Github Release → Run workflow
264+
# 4. Enter tag: v1.2.3
265+
# 5. Review draft release and publish
266+
```
267+
268+
### Scenario 2: Release Single App (Docker Only)
186269

187270
```bash
188271
# Tag and push - automation handles the rest
189272
git tag evm/v0.2.0
190273
git push origin evm/v0.2.0
191274
```
192275

193-
### Scenario 2: Release Multiple Apps
276+
### Scenario 3: Release Multiple Apps
194277

195278
```bash
196279
# Release apps independently
@@ -201,7 +284,7 @@ git push origin evm/single/v0.2.0 testapp/v1.0.0
201284
# Each triggers its own workflow
202285
```
203286

204-
### Scenario 3: Full Go Module Release
287+
### Scenario 4: Full Go Module Release
205288

206289
```bash
207290
# 1. Core
@@ -216,7 +299,7 @@ git tag execution/evm/v0.3.0 && git push origin execution/evm/v0.3.0
216299
git tag apps/evm/v0.3.0 && git push origin apps/evm/v0.3.0
217300
```
218301

219-
### Scenario 4: Hotfix/Patch Release
302+
### Scenario 5: Hotfix/Patch Release
220303

221304
```bash
222305
# For Docker images - delete and recreate
@@ -263,6 +346,32 @@ go get github.com/evstack/ev-node/core@v0.3.0
263346

264347
## Troubleshooting
265348

349+
### GitHub Releases
350+
351+
**"Invalid tag format" error**
352+
353+
- Ensure tag follows semantic versioning: `v1.2.3`
354+
- Check for typos or incorrect format
355+
- Valid examples: `v1.2.3`, `v1.2.3-rc.4`, `v1.2.3-beta.1`
356+
357+
**"Version not found in CHANGELOG.md"**
358+
359+
- Verify CHANGELOG.md contains a section for the version
360+
- Check version format matches exactly (e.g., `v1.2.3` vs `1.2.3`)
361+
- Ensure CHANGELOG.md is committed and pushed
362+
363+
**"Claude API error"**
364+
365+
- Verify `CLAUDE_CODE_OAUTH_TOKEN` secret is configured
366+
- Check repository permissions for GitHub Actions
367+
- Review workflow logs for specific error messages
368+
369+
**Empty or incomplete release notes**
370+
371+
- Ensure CHANGELOG.md has detailed entries for the version
372+
- Check that changelog sections (Added, Changed, Fixed, etc.) are properly formatted
373+
- Review the draft release and manually edit if needed
374+
266375
### Docker Releases
267376

268377
**"App directory does not exist"**

0 commit comments

Comments
 (0)