22
33This 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
189272git tag evm/v0.2.0
190273git 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
216299git 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