🚀 Release Checklist
Comprehensive guide for deploying new versions of Requests and Offers
This checklist ensures consistent, reliable releases by following a systematic process that addresses common failure points and edge cases.
📋 Pre-Release Checklist
✅ Environment Verification
- Git Authentication: Ensure you can push to main repository and submodules
-
GitHub CLI Access: Verify
gh auth statusshows proper authentication -
Branch Status: Confirm you're on the correct branch (
devfor development,mainfor releases in main repo;releasefor kangaroo submodule) - Clean Working Directory: No uncommitted changes in main repository or submodules
-
Submodule Status: Verify submodules are initialized and up to date
git submodule status git submodule update --init --recursive - Network Access: Confirm internet connectivity for GitHub operations
GitHub CLI Authentication Setup
Prerequisites: GitHub CLI requires proper authentication for release operations
Step 1: Install GitHub CLI
# macOS
brew install gh
# Ubuntu/Debian
sudo apt install gh
# Other platforms: https://github.com/cli/cli#installation
Step 2: Authenticate with GitHub
# Authenticate (will open browser for OAuth)
gh auth login
# Select scope:
# - What account do you want to log into? → GitHub.com
# - What is your preferred protocol for Git operations? → HTTPS
# - Authenticate Git with your GitHub credentials? → Yes
# - How would you like to authenticate GitHub CLI? → Login with a web browser
# Verify authentication
gh auth status
# Should show: "Logged in to github.com as username ✓"
Step 3: Verify Repository Access
# Test repository access
gh repo view happenings-community/requests-and-offers
gh repo view happenings-community/kangaroo-electron
gh repo view happenings-community/homebrew-requests-and-offers
# Test release permissions
gh release list --repo happenings-community/requests-and-offers --limit 1
Step 4: Configure Git Credentials (if needed)
# Configure git to use gh for authentication
git config --global credential.helper "!gh auth git-credential"
# Verify git authentication
git ls-remote https://github.com/happenings-community/requests-and-offers.git
Multi-Repository Management
Repository Structure:
# Main repository (primary working directory)
https://github.com/happenings-community/requests-and-offers
# Submodules (accessed via deployment/ directory)
https://github.com/happenings-community/kangaroo-electron # deployment/kangaroo-electron
https://github.com/happenings-community/homebrew-requests-and-offers # deployment/homebrew
Submodule Workflow:
# Initialize all submodules
git submodule update --init --recursive
# Navigate to specific submodule
cd deployment/kangaroo-electron
# Work in submodule (independent git operations)
git status
git checkout main
git pull origin main
# Return to main repository
cd ../..
# Update submodule reference in main repo
git add deployment/kangaroo-electron
git commit -m "submodule: Update kangaroo-electron to latest"
git push origin dev
Branch Management Strategy:
# Main Repository: work on dev branch (default); main is reserved for releases
git checkout dev
git pull origin dev
# Kangaroo Submodule:
# - Development on main branch
# - Releases trigger from release branch
cd deployment/kangaroo-electron
git checkout main # Development
git checkout release # Release builds
# Homebrew Submodule: work on main branch only
cd deployment/homebrew
git checkout main
Cross-Repository Operations:
# Create coordinated releases across repositories
gh release create v0.2.3 --repo happenings-community/requests-and-offers
gh release create v0.2.3 --repo happenings-community/kangaroo-electron
# Copy assets between repositories
gh release download v0.2.3 --repo happenings-community/kangaroo-electron --pattern "*.dmg"
# Synchronize tags across repositories
git tag -a v0.2.3 -m "Coordinated release v0.2.3"
git push origin v0.2.3
# In each submodule:
cd deployment/kangaroo-electron
git tag -a v0.2.3 -m "Desktop apps v0.2.3"
git push origin v0.2.3
✅ Version Planning
- Version Number: Determine next version following semantic versioning
- Change Documentation: Update CHANGELOG.md with new version details
- Breaking Changes: Identify any breaking changes requiring major version bump
- Feature Scope: Confirm all intended features are complete and tested
✅ Code Quality Checks
-
Tests Passing: Run full test suite (
bun testin main repo) -
Lint Clean: No linting errors (
cd ui && bun run lint) -
Type Safety: TypeScript compilation successful (
cd ui && bun run check) -
Build Verification: Ensure project builds without errors (
bun build:happ)
🔧 Release Preparation
✅ Main Repository Setup
cd /home/soushi888/Projets/Holochain/requests-and-offers
-
Update Version Files: Ensure version consistency across:
dnas/requests_and_offers/dna.yamlui/package.jsonCHANGELOG.md
-
Set Test Mode Environment: Ensure test mode (no development features) before building:
# This ensures development features are disabled in the build export VITE_MOCK_BUTTONS_ENABLED=false -
Build WebHapp:
bun package(createsworkdir/requests_and_offers.webhapp) - Verify WebHapp: Confirm file exists and has reasonable size (>5MB)
- Verify Test Mode: Ensure the webhapp was built with test mode (no development features)
- Commit Changes: Commit any version updates with clear message
✅ Kangaroo Repository Setup
# Option 1: Work in submodule directory
cd deployment/kangaroo-electron
# Option 2: Work from main repo with submodule commands
git submodule update --remote kangaroo-electron
cd deployment/kangaroo-electron
-
Update Version: Edit
kangaroo.config.tswith new version number -
Update Release Notes: Create/update
RELEASE_BUILD_NOTES.md -
Copy WebHapp: Copy latest webhapp from main repo to
pouch/directorycp ../../workdir/requests_and_offers.webhapp pouch/ - Verify Correct WebHapp: Ensure the webhapp in pouch/ is built in test mode (no development features)
-
Verify Configuration: Ensure network servers are configured for the target network:
- For dev-test:
bootstrapUrl: 'https://dev-test-bootstrap2.holochain.org/'/signalUrl: 'wss://dev-test-bootstrap2.holochain.org/' - For production:
bootstrapUrl: 'https://holostrap.elohim.host/'/signalUrl: 'wss://holostrap.elohim.host/'
- For dev-test:
- Commit Changes: Commit version and configuration updates in submodule
🌿 Branch Synchronization
✅ Main Repository Branch Sync
⚠️ CRITICAL: Complete ALL commits (including submodule reference updates) on
devBEFORE promoting tomainand creating the tag. The tag must point to a commit that exists on both branches. Never commit tomainafter tagging — syncdevfirst, then promote, then tag.
# Ensure dev branch is current and has ALL commits for the release
# (including submodule updates committed on dev, not just main)
git checkout dev
git pull origin dev
# Promote dev to main for release
git checkout main
git merge dev --no-edit
git push origin main
# Verify main is up to date with dev
git log --oneline dev..main | wc -l
# Should be 0 — main must be a fast-forward of dev
# ⚠️ BEFORE TAGGING: verify both branches are at the same commit
git rev-parse dev && git rev-parse main
# Both hashes must match — if not, sync before proceeding
# After tag creation, if any commit is needed, do it on dev first:
# git checkout dev && git commit ... && git push origin dev
# git checkout main && git merge dev --no-edit && git push origin main
# Then re-tag if the tag was already created (delete remote + local, recreate)
✅ Kangaroo Submodule Branch Sync
# Work in kangaroo submodule
cd deployment/kangaroo-electron
# Update main branch
git checkout main
git pull origin main
# Sync release branch with main
git checkout release
git merge main --no-edit
git push origin release
# Verify branches are synchronized
git log --oneline main..release | wc -l
# Should be 0 after sync
# Return to main repository
cd ../..
🚀 Release Execution
✅ Manual Release Process
Step 1: Update Main Repository
cd /home/soushi888/Projets/Holochain/requests-and-offers
# Update changelog using the command
/update-changelog
# Update version in package.json
# Edit package.json: "version": "0.1.X"
Step 2: Build WebHapp Package
# Enter Nix shell for proper environment
nix develop
# Build the webhapp package
bun package
# Verify the webhapp was created
ls -la workdir/requests_and_offers.webhapp
Step 3: Create Main Repository Release
# Create a tag for the new version
git tag v0.1.X
# Create a basic draft release with initial notes
gh release create v0.1.X \
--title "🚀 Requests and Offers v0.1.X" \
--notes "### What's New
[Feature highlights from changelog]
### Installation
[WebApp installation instructions]
### Desktop Apps
🔄 Desktop applications are building... [Links will appear here when ready]
### Technical Specifications
- **Network**: Holostrap alpha network
- **Holochain Version**: 0.5.5
- **UI Framework**: SvelteKit + Svelte 5
- **Architecture**: 7-Layer Effect-TS
### Getting Started
[Quick start guide for new users]
---
⚠️ **Note**: Desktop applications are currently being built. Download links will be added automatically when the build process completes."
# Upload the webhapp (for Moss/desktop users)
gh release upload v0.1.X workdir/requests_and_offers.webhapp --clobber
# Upload the happ (for edge node operators — see documentation/guides/edge-node-setup.md)
gh release upload v0.1.X workdir/requests_and_offers.happ --clobber
Step 4: Update Kangaroo Repository
# Navigate to kangaroo submodule
cd deployment/kangaroo-electron
# Copy the fresh webhapp to kangaroo pouch
cp ../../workdir/requests_and_offers.webhapp pouch/
# Update version in package.json (if needed)
# Edit package.json: "version": "0.1.X"
# Update version in kangaroo.config.ts (already at 0.1.9)
# Edit kangaroo.config.ts: version: '0.1.X'
Step 5: Create Kangaroo GitHub Release (BEFORE triggering CI/CD)
⚠️ CRITICAL ORDERING: The GitHub release MUST exist before pushing to the
releasebranch. CI/CD builds will attempt to upload artifacts to this release — if it doesn't exist, the upload step fails (commonly the Ubuntu build fails first).
# Create the kangaroo release FIRST — CI needs this to upload artifacts
gh release create v0.1.X \
--title "Requests and Offers v0.1.X — Desktop Apps" \
--notes "Desktop application builds for v0.1.X.
See main release: https://github.com/happenings-community/requests-and-offers/releases/tag/v0.1.X"
Step 5b: Trigger Kangaroo CI/CD Build
# Commit the webhapp update
git add pouch/requests_and_offers.webhapp
git commit -m "build: update webhapp for v0.1.X release"
# Push to dev first (dev is the integration branch)
git push origin dev
# Now push to release branch to trigger GitHub Actions
git checkout release
git merge main --no-edit
git push origin release
Step 6: Monitor Kangaroo Build
# Monitor GitHub Actions progress
gh run list --limit=5
# View specific run logs if needed
gh run view [RUN_ID] --log-failed
# Verify all platform builds complete:
# - macOS ARM64 (Apple Silicon)
# - macOS x64 (Intel)
# - Windows x64
# - Linux x64
Step 7: Update Release Notes from Template
Use the release notes template at
documentation/templates/release-notes-template.md. The template matches the format used in v0.3.0 and v0.4.0 releases.
# 1. The only variable in the download URLs is {VERSION} — replace it globally
# 2. Fill in features/bugfixes from CHANGELOG.md
# 3. Set the network and Holochain version in Technical Specifications
# 4. Apply to GitHub release:
gh release edit v0.X.Y --notes "$(cat /tmp/release-notes.md)"
See the template's Variable Reference table for all placeholders.
✅ Automated Deployment (Available)
✅ Note: The automated deployment system is fully functional using bun deploy commands. This provides streamlined release management with built-in validation and rollback capabilities.
Available Automated Commands:
# Full deployment pipeline (recommended)
bun deploy # Execute complete deployment pipeline
# Preview and validation options
bun deploy:dry-run # Preview deployment without executing
bun deploy:status # Check deployment status and progress
bun deploy:validate # Validate completed deployment
bun deploy:rollback # Rollback failed deployment
Automated System Handles:
- ✅ Environment validation (including submodules)
- ✅ WebApp build and GitHub release creation
- ✅ Kangaroo desktop app builds (all platforms)
- ✅ Homebrew formula updates with SHA256 checksums
- ✅ Cross-repository synchronization
- ✅ Comprehensive validation and rollback capabilities
- ✅ Template-based release notes generation
✅ Manual Release (Alternative)
If you prefer manual release process:
-
Main Repository Release: Create GitHub release for main repo
gh release create v0.1.X --title "🚀 Requests and Offers v0.1.X - Feature Name" --notes "Initial release notes" -
Kangaroo Submodule Release: Create GitHub release for kangaroo submodule
cd deployment/kangaroo-electron gh release create v0.1.X --title "v0.1.X - Feature Name" --notes "Desktop release notes" cd ../.. -
Upload WebHapp: Add webhapp to main repository release
gh release upload v0.1.X /path/to/requests_and_offers.webhapp --clobber
✅ Desktop Build Trigger
-
Trigger Builds: Push to kangaroo submodule release branch triggers GitHub Actions
# Create trigger commit in kangaroo submodule if needed cd deployment/kangaroo-electron echo "$(date)" > .trigger git add .trigger git commit -m "trigger: release v0.1.X build" git push origin release cd ../.. -
Monitor Builds: Track build progress
gh run list --limit 1 gh run view [RUN_ID] --log-failed # If builds fail
✅ Build Verification
-
All Platforms Complete: Verify builds complete successfully
- ✅ macOS ARM64 (Apple Silicon)
- ✅ macOS x64 (Intel)
- ✅ Windows
- ✅ Linux (DEB + AppImage)
-
Asset Upload Confirmation: Check all expected assets are uploaded
gh release view v0.1.X # Should show 6+ assets (5 binaries + checksums)
📝 Release Notes Finalization
✅ Main Repository Release Notes
-
Update Release Description: Add comprehensive release notes including:
- Feature highlights with clear descriptions
- Platform-specific download links pointing to kangaroo repo
- Installation instructions for each platform
- Technical specifications and network information
- Getting started guide for new users
- Verify Asset Links: Test all download links work correctly
- Cross-Repository Links: Ensure links between main and kangaroo repos work
✅ Communication & Documentation
- Update README: Reflect any new features or installation changes
- Documentation Updates: Update any relevant documentation
- Community Notification: Prepare announcement for community channels
🍺 Homebrew Formula Management
✅ Homebrew Integration Overview
The Requests and Offers application is distributed via Homebrew using a custom formula that automatically downloads the correct platform-specific binaries from GitHub releases.
Repository Structure:
- Main Repository:
https://github.com/happenings-community/requests-and-offers - Homebrew Repository:
https://github.com/happenings-community/homebrew-requests-and-offers(submodule) - Submodule Path:
deployment/homebrew
✅ Formula Update Process
Prerequisites:
- Desktop builds completed successfully
- All GitHub release assets uploaded and verified
- Homebrew submodule initialized and up to date
Step 1: Navigate to Homebrew Repository
cd deployment/homebrew
Step 2: Calculate SHA256 Checksums
# Download release assets to calculate checksums
wget https://github.com/happenings-community/kangaroo-electron/releases/download/v0.2.3/Requests-and-Offers-0.2.3-arm64-mac.dmg
wget https://github.com/happenings-community/kangaroo-electron/releases/download/v0.2.3/Requests-and-Offers-0.2.3-x64-mac.dmg
wget https://github.com/happenings-community/kangaroo-electron/releases/download/v0.2.3/Requests-and-Offers-0.2.3-x64-win.exe
wget https://github.com/happenings-community/kangaroo-electron/releases/download/v0.2.3/Requests-and-Offers-0.2.3-x64-linux.deb
wget https://github.com/happenings-community/kangaroo-electron/releases/download/v0.2.3/Requests-and-Offers-0.2.3.AppImage
# Calculate checksums for all binaries
sha256sum Requests-and-Offers-0.2.3-arm64-mac.dmg
sha256sum Requests-and-Offers-0.2.3-x64-mac.dmg
sha256sum Requests-and-Offers-0.2.3-x64-win.exe
sha256sum Requests-and-Offers-0.2.3-x64-linux.deb
sha256sum Requests-and-Offers-0.2.3.AppImage
# Clean up downloaded files
rm Requests-and-Offers-0.2.3-*
Step 3: Update Formula Configuration
# Edit the formula file
vim Casks/requests-and-offers.rb
Required Updates:
cask "requests-and-offers" do
# Update version number
version "0.2.3"
if Hardware::CPU.arm?
# Update SHA256 for Apple Silicon
sha256 "NEW_ARM64_SHA256_CHECKSUM"
url "https://github.com/happenings-community/kangaroo-electron/releases/download/v#{version}/Requests-and-Offers-#{version}-arm64-mac.dmg"
else
# Update SHA256 for Intel
sha256 "NEW_X64_SHA256_CHECKSUM"
url "https://github.com/happenings-community/kangaroo-electron/releases/download/v#{version}/Requests-and-Offers-#{version}-x64-mac.dmg"
end
# No other changes needed - URLs are template-based
end
Step 4: Test Formula Updates
# Test installation from local formula
brew install --build-from-source ./Casks/requests-and-offers.rb
# Verify installation works
brew list requests-and-offers
ls /usr/local/Caskroom/requests-and-offers/*/Requests\ and\ Offers.app
Step 5: Commit and Push Changes
git add Casks/requests-and-offers.rb
git commit -m "v0.2.3: Update formula with new release checksums
- Update version to 0.2.3
- Update SHA256 checksums for all binaries
- Verified installation on both ARM64 and x64 macOS"
git push origin main
# Return to main repository
cd ../..
Step 6: Update Submodule Reference
# Update submodule reference in main repository
git add deployment/homebrew
git commit -m "submodule: Update homebrew formula for v0.2.3 release"
git push origin main
✅ Homebrew User Installation
For End Users:
# Add our tap (one-time setup)
brew tap happenings-community/homebrew-requests-and-offers
# Install the application
brew install --cask requests-and-offers
# Launch the application
open "Requests and Offers"
# Upgrade to new version
brew upgrade --cask requests-and-offers
# Uninstall (if needed)
brew uninstall --cask requests-and-offers
Verification Commands:
# Check installed version
brew info requests-and-offers
# Verify installation location
ls -la "$(brew --prefix)/Caskroom/requests-and-offers"
# Check application bundle
ls -la "/usr/local/Caskroom/requests-and-offers/*/Requests and Offers.app"
✅ Common Homebrew Issues
Checksum Mismatch:
# Error: SHA256 mismatch
# Solution: Recalculate checksums and update formula
sha256sum downloaded-file.dmg
# Update the sha256 value in Casks/requests-and-offers.rb
Download URL Issues:
# Error: No available file with URL
# Solution: Verify GitHub release assets exist
gh release view v0.2.3 # Check available assets
# Ensure URL pattern matches actual file names
Permission Issues:
# Error: Permission denied
# Solution: Use sudo or fix homebrew permissions
sudo chown -R $(whoami) /usr/local/Caskroom/
# Or use: brew install --cask requests-and-offers --force
Architecture Detection:
# Verify which architecture formula selects
uname -m # Should show arm64 or x86_64
# Test formula logic:
if Hardware::CPU.arm?
echo "Apple Silicon (M1/M2/M3)"
else
echo "Intel Mac"
end
🔄 Post-Release Verification
✅ Download Testing
- Test Downloads: Verify downloads work from GitHub release page
- Installation Testing: Test installation on at least one platform
- Network Connectivity: Verify app connects to production network
- Basic Functionality: Confirm core features work in released version
✅ Repository Cleanup
- Branch Synchronization: Ensure main and release branches are in sync
- Tag Verification: Confirm git tags are properly created
- Asset Verification: Double-check all assets are available and working
🚨 Troubleshooting Common Issues
Authentication Issues
# GitHub CLI authentication failures
gh auth login # Re-authenticate
gh auth status # Check current status
gh auth logout # Logout and re-authenticate
# Git permission issues
git config --global credential.helper "!gh auth git-credential"
git config --global --unset credential.helper # Reset if needed
# Repository access verification
gh repo view happenings-community/requests-and-offers
gh repo view happenings-community/kangaroo-electron
Submodule Issues
# Submodule not initialized or out of sync
git submodule deinit -f deployment/kangaroo-electron
git submodule update --init --recursive
# Submodule in detached HEAD state
cd deployment/kangaroo-electron
git checkout main
cd ../..
# Submodule reference not updated
git add deployment/kangaroo-electron
git commit -m "submodule: Update reference"
git push origin main
Kangaroo Submodule Branch Sync Issues
# If kangaroo release branch has commits ahead of main
cd deployment/kangaroo-electron
git checkout main
git merge release --no-edit
git push origin main
# Reset kangaroo release branch to match main
git checkout release
git reset --hard main
git push --force-with-lease origin release
cd ../..
# Main repo: if main has drifted behind dev (should not happen in normal flow)
git checkout dev
git pull origin dev
git checkout main
git merge dev --no-edit
git push origin main
Missing GitHub Release
# Create missing release before builds
gh release create v0.2.3 --title "Release Title" --notes "Release notes"
# Check if release exists
gh release view v0.2.3
# List all releases
gh release list --limit 10
Build Failures
# Check build logs
gh run list --limit 5
gh run view [RUN_ID] --log-failed
# Monitor running builds
gh run watch [RUN_ID]
# Common fixes:
# 1. Ensure release exists on GitHub
# 2. Check webhapp file is in pouch/ directory
# 3. Verify version consistency across files
# 4. Confirm submodule reference is updated
Asset Upload Issues
Checksum Calculation Errors
# Recalculate checksums for Homebrew formula
cd deployment/homebrew
# Download assets to verify checksums
wget https://github.com/happenings-community/kangaroo-electron/releases/download/v0.2.3/Requests-and-Offers-0.2.3-arm64-mac.dmg
# Calculate correct checksums
sha256sum Requests-and-Offers-0.2.3-arm64-mac.dmg
# Update formula with correct checksums
vim Casks/requests-and-offers.rb
Missing Release Assets
# Check what assets are uploaded
gh release view v0.2.3 --json assets
# Expected assets for complete release:
# - requests_and_offers.webhapp (main repo — for Moss/desktop)
# - requests_and_offers.happ (main repo — for edge node operators)
# - Requests-and-Offers-0.2.3-arm64-mac.dmg
# - Requests-and-Offers-0.2.3-x64-mac.dmg
# - Requests-and-Offers-0.2.3-x64-win.exe
# - Requests-and-Offers-0.2.3-x64-linux.deb
# - Requests-and-Offers-0.2.3.AppImage
# Re-trigger builds if assets missing
cd deployment/kangaroo-electron
git commit --allow-empty -m "trigger: rebuild v0.2.3"
git push origin release
Template Population Issues
# Release notes template variables not replaced
# Check template file exists
ls -la documentation/templates/release-notes-template.md
# Verify variable replacement
sed -n 's/{[^}]*}/VAR/gp' /tmp/release-notes-v0.2.3.md
# Manual template population example
cp documentation/templates/release-notes-template.md /tmp/release-notes-v0.2.3.md
sed -i 's/{VERSION}/0.2.3/g' /tmp/release-notes-v0.2.3.md
sed -i 's/{RELEASE_DATE}/2025-12-18/g' /tmp/release-notes-v0.2.3.md
Version Mismatch Issues
# Check version consistency across files
grep -r "0.2.3" --include="*.json" --include="*.ts" --include="*.yaml" .
# Common version files to check:
# - package.json (root and ui/)
# - kangaroo.config.ts
# - dnas/requests_and_offers/dna.yaml
# - deployment/homebrew/Casks/requests-and-offers.rb
# Update inconsistent versions
find . -name "*.json" -exec sed -i 's/0.2.2/0.2.3/g' {} \;
find . -name "*.ts" -exec sed -i 's/0.2.2/0.2.3/g' {} \;
Network and Connectivity Issues
# Test GitHub connectivity
gh auth status
curl -I https://api.github.com
# Test repository access
git ls-remote origin main
git fetch origin
# Submodule connectivity issues
git submodule sync
git submodule update --init --recursive
Environment Variable Issues
# Check environment variables for build
echo $VITE_MOCK_BUTTONS_ENABLED
echo $VITE_PEERS_DISPLAY_ENABLED
# Verify .env file exists and is correct
cat .env
# Test environment affects build
bun package # Should build without dev features in production mode
📊 Release Metrics
Track these metrics for release process improvement:
- ⏱️ Total Release Time: Target <30 minutes end-to-end
- 🔄 Build Retry Count: Target 0 retries needed
- ✅ Success Rate: Target 100% successful releases
- 🐛 Issues Found: Track common failure modes for process improvement
Performance Benchmarks (v0.1.9 Achieved)
- Total Release Time: ~2.5 hours (including issue resolution)
- Build Retry Count: 1 retry (for macOS upload fixes)
- Success Rate: 100% (5/5 platforms)
- Platform Build Times:
- macOS ARM64: 1m46s
- macOS x64: 3m2s
- Windows x64: 2m54s
- Linux x64: ~4m (includes post-install scripts)
🎯 Success Criteria
A successful release includes:
- ✅ All platform builds complete successfully (5 binaries: macOS ARM64/x64, Windows, Linux DEB/AppImage)
- ✅ All assets uploaded and downloadable
- ✅ Release notes complete and accurate with working links
- ✅ Download links tested and working for all platforms
- ✅ Branches synchronized between repositories (main + release)
- ✅ Homebrew formula updated with correct checksums
- ✅ Basic functionality verified in released app
- ✅ Cross-platform installation methods available (GitHub + Homebrew)
Release Process Evolution
- v0.1.8: 2/5 platforms (40% success) - Linux only
- v0.1.9: 5/5 platforms (100% success) - Complete cross-platform support
Continuous Improvement Areas
- CI/CD Reliability: Manual upload strategy more robust than electron-builder auto-publishing
- Asset Upload Strategy: Wildcard patterns eliminate filename mismatch failures
- Cross-Repository Coordination: Established workflow for main repo + kangaroo + homebrew synchronization
- Documentation Quality: Enhanced troubleshooting patterns for common failure modes
Next: Use this checklist for every release to ensure consistency and reliability. Update the checklist based on lessons learned from each release.
🔧 Kangaroo CI/CD Process Details
Repository Structure
- Main Repository:
https://github.com/happenings-community/requests-and-offers - Kangaroo Repository:
https://github.com/happenings-community/kangaroo-electron(submodule) - Submodule Path:
deployment/kangaroo-electron
CI/CD Trigger Mechanism
- Trigger: Any commit to
releasebranch in kangaroo repository - ⚠️ PREREQUISITE: A GitHub release for the target version MUST exist before pushing to
releasebranch. CI uploads artifacts to this release — missing release = failed uploads. - Required Files:
pouch/requests_and_offers.webhapp(the webapp package)- Proper version in
package.jsonandkangaroo.config.ts
- Build Platforms: Windows x64, macOS ARM64, macOS x64, Linux x64
- Expected Assets: 5 files per release (4 binaries + checksums)
Critical Integration Points
-
WebHapp Transfer: Main → Kangaroo
# From main repo root cp workdir/requests_and_offers.webhapp deployment/kangaroo-electron/pouch/ -
Version Synchronization:
- Main
package.jsonversion must match Kangaroopackage.json - Kangaroo
kangaroo.config.tsversion must match both - All three must be updated for consistent release
- Main
-
Cross-Repository Linking:
- Main release notes link to Kangaroo release assets
- Kangaroo release links back to main repository
- Both repositories should reference each other
Common Failure Points
❌ Missing GitHub Release Before CI/CD Push
- Symptom: Builds complete but upload step fails with
release not found(Ubuntu typically fails first) - Fix: Create the GitHub release BEFORE pushing to the
releasebranch:gh release create v0.X.Y --title "..." --notes "..." - Recovery: Create the release, then re-trigger with
git commit --allow-empty -m "trigger: rebuild vX.Y.Z" && git push origin release
❌ Missing WebHapp in Pouch
- Symptom: CI/CD runs but produces empty/broken builds
- Fix: Ensure fresh webhapp is copied to
deployment/kangaroo-electron/pouch/
❌ Version Mismatch
- Symptom: Builds tagged with wrong version number
- Fix: Synchronize all version files before triggering builds
❌ No GitHub Actions Triggered
- Symptom: Push to release branch but no CI/CD runs
- Fix: Ensure proper commit with webhapp changes exists
📱 Cross-Platform Asset Verification
Expected File Structure
For each release, Kangaroo repository should generate:
Requests-and-Offers-{version}-arm64-mac.dmg # macOS Apple Silicon
Requests-and-Offers-{version}-x64-mac.dmg # macOS Intel
Requests-and-Offers-{version}-x64-win.exe # Windows
Requests-and-Offers-{version}-x64-linux.deb # Linux (Debian/Ubuntu)
Requests-and-Offers-{version}.AppImage # Linux (Universal portable)
checksums.txt # SHA256 checksums for all files
Download Link Format
Standard GitHub release download URLs:
https://github.com/happenings-community/kangaroo-electron/releases/download/v{version}/Requests-and-Offers-{version}-{platform}.{extension}
# Platform Examples:
# macOS ARM64: Requests-and-Offers-0.1.9-arm64-mac.dmg
# macOS x64: Requests-and-Offers-0.1.9-x64-mac.dmg
# Windows: Requests-and-Offers-0.1.9-x64-win.exe
# Linux DEB: Requests-and-Offers-0.1.9-x64-linux.deb
# Linux AppImage: Requests-and-Offers-0.1.9.AppImage
Asset Size Expectations
- macOS DMG: ~85MB (includes bundled webhapp)
- Windows EXE: ~90MB (includes bundled webhapp)
- Linux DEB: ~80MB (includes bundled webhapp)
- Linux AppImage: ~85MB (portable universal format)
- Total Release: ~440MB across all platforms