This guide describes the automated release process using GitHub Actions workflows.
GitHub → Actions → "🚀 Start Web Release"
→ Enter version (e.g., 1.74.0)
→ Choose type (regular/hotfix)
→ Click "Run workflow"
Who: Release Manager
- Go to GitHub → Actions → "🚀 Start Web Release"
- Click "Run workflow"
- Fill in:
- Version: e.g.,
1.74.0(must be X.Y.Z format) - Release type:
regular→ fromdevbranch (normal releases)hotfix→ frommainbranch (urgent fixes)
- Version: e.g.,
- Click "Run workflow"
What happens automatically:
- ✅ Creates/updates
releasebranch - ✅ Bumps version in
package.json - ✅ Generates changelog with grouped changes
- ✅ Creates PR from
releasetomain - ✅ Sends Slack notification (if configured)
Result: Pull Request ready for QA (~2-3 minutes)
QA Process:
- Find the release PR (has
releaselabel) - Test the changes thoroughly
- If bugs found:
- Create PRs targeting
releasebranch - Merge fixes
- Continue testing
- Create PRs targeting
- When all tests pass → Approve the PR
Who: Release Manager (after QA approval)
Manual steps:
-
Review and approve the release PR
-
IMPORTANT: Merge the PR to
mainWITHOUT SQUASHINGDo not use GitHub's merge button! Use the command line:
git push origin release:main
What happens automatically:
- ✅ Creates git tag
- ✅ Creates and publishes GitHub release
- ✅ Builds production assets
- ✅ Uploads to S3
- ✅ Prepares production deployment
- ✅ Creates back-merge PR (main → dev) for manual review
- ✅ Sends Slack notification to
#topic-wallet-releaseswith back-merge PR link
Result: Release published, ready for production deployment, and back-merge PR ready for review (~5-10 minutes)
Note: Due to commit signing restrictions, the back-merge cannot be pushed directly to
dev. A PR is created automatically and linked in the Slack notification. Please review and merge the back-merge PR to keepdevin sync withmain.
Workflows work immediately after merging this PR.
To enable notifications:
- Create a Slack webhook URL
- Go to Settings → Secrets and variables → Actions → Variables
- Add variable:
SLACK_WEBHOOK_URLwith your webhook URL
Notifications will be sent for:
- Release started
- Production deployment completed with back-merge PR link (to
#topic-wallet-releaseschannel)
┌──────────────┐
│ dev │ ← Active development
└──────┬───────┘
│
│ (1) Click "Start Release"
▼
┌──────────────┐
│ release │ ← Code freeze for QA
└──────┬───────┘
│
│ (QA Testing - manual)
│ (2) Merge PR
▼
┌──────────────┐
│ main │ ← Production-ready
└──────┬───────┘
│
│ (Auto: Tag, Release, Build, Upload to S3 & Back-merge PR)
│
├─────────────────┐
▼ ▼
Production 🎉 ┌──────────────┐
│ Back-merge │ ← PR created (manual merge)
│ PR → dev │
└──────────────┘
Problem: Version tag already exists Solution: Use a different version number
Problem: Complete Release won't run due to failing checks Solution:
- Fix the failing checks, or
- Use
skip_checks: trueif checks are incorrectly failing
Problem: Back-merge PR has conflicts Solution:
- A back-merge PR is automatically created after each release
- If there are conflicts, the PR will be marked with "(CONFLICTS)" in the title
- Resolve conflicts by merging
maininto the back-merge branch:git fetch origin git checkout backmerge/main-to-dev-vX.Y.Z git merge origin/main # Resolve conflicts git push - Then merge the PR on GitHub
Problem: Can't find workflow in Actions tab Solution:
- Ensure workflows are merged to main/dev branch
- Refresh the Actions page
- Check you have repository access
Problem: No Slack messages received Solution:
- Verify
SLACK_WEBHOOK_URLis configured in repository variables - Test webhook manually with curl
- Check workflow logs for errors
- Creating release branches
- Bumping versions
- Generating changelogs
- Creating and merging PRs
- Syncing branches
- QA testing and approval - Still requires thorough testing
- PR review and approval - Team still reviews changes
- Decision to merge - Merge release PR only after QA approves
- Production deployment - DevOps still controls final deployment
- ✅ No breaking changes - manual process still documented
- ✅ Existing deployment workflows unchanged
- ✅ Easy rollback - just don't use the workflows
- ✅ QA process remains human-controlled
If you need to use the manual process, see the legacy documentation in release-procedure.md.
Use manual process if:
- Automated workflows are unavailable
- You need emergency access without GitHub UI
- Debugging workflow issues
- Quick questions: Review this guide
- Workflow issues: Check Actions logs for detailed error messages
- Process questions: Contact Release Manager
- Bug reports: Create GitHub issue with workflow run link
- GitHub Actions: https://github.com/safe-global/safe-wallet-monorepo/actions
- Release Workflows:
- Start Release
- Tag, Release & Deploy (auto-triggered on PR merge)