Release Workflow Overview
The release workflow is defined in.github/workflows/release.yml:1-46 and automatically:
- Builds the Windows application on a Windows runner
- Creates a production
.exeinstaller - Publishes a draft GitHub Release
- Attaches the installer to the release
Prerequisites
1
Configure GitHub Secrets
Add these secrets to your GitHub repository settings (Settings → Secrets and variables → Actions):
2
Verify package.json version
Update the version in The version number will be used for the Git tag and release name.
frontend/package.json:Triggering a Release
Method 1: Using npm script (Recommended)
1
Navigate to frontend directory
2
Run the release command
package.json:30):- Reads the version from
package.json - Creates a Git tag (e.g.,
v0.1.1) - Pushes the tag to GitHub
- Triggers the GitHub Actions workflow
Method 2: Manual Git commands
Alternatively, you can create and push tags manually:Method 3: Manual workflow dispatch
You can also trigger the workflow manually from GitHub:- Go to Actions tab in your repository
- Select Release workflow
- Click Run workflow
- Select the branch and click Run workflow
Manual dispatch is useful for re-running failed builds or testing the workflow.
Release Workflow Details
The workflow runs onwindows-latest and executes the following steps:
1
Checkout code
Clones the repository at the tagged commit:
2
Setup build environment
Installs pnpm 9 and Node.js 20 with dependency caching:
3
Install dependencies
4
Build and publish
Builds the application and creates the GitHub Release:The
electron-builder configuration (package.json:141-147) automatically publishes to GitHub:Release Artifacts
After the workflow completes successfully:- A draft release is created at
https://github.com/YOUR-USERNAME/YOUR-REPO/releases - The Windows installer (
.exe) is automatically attached - The release name follows the format:
v${version}(e.g.,v0.1.1)
Releases are created as drafts by default. You’ll need to manually publish them from the GitHub Releases page after reviewing.
Workflow Triggers
The release workflow triggers on:- Tag push: Any tag starting with
v(e.g.,v0.1.0,v1.2.3-beta) - Manual dispatch: Can be triggered manually from GitHub Actions UI
Best Practices
Versioning Strategy
Follow semantic versioning:- Major (v1.0.0): Breaking changes
- Minor (v0.1.0): New features, backwards compatible
- Patch (v0.0.1): Bug fixes
Pre-release Tags
For beta or alpha releases:Testing Before Release
-
Test the local build first:
- Verify the installer works on a clean Windows system
- Only then trigger the GitHub release
Troubleshooting
Workflow Fails at Build Step
- Check that all GitHub Secrets are configured correctly
- Review the workflow logs for specific error messages
- Ensure the version in
package.jsonis valid
Release Not Created
- Verify
GH_TOKENhasreposcope - Check that the tag format matches
v*pattern - Ensure electron-builder publish configuration is correct
Multiple Releases for Same Tag
If you push the same tag multiple times:- Delete the existing release from GitHub
- Delete the tag:
git tag -d v0.1.0 && git push origin :refs/tags/v0.1.0 - Create a new tag with incremented version