CI/CD Setup - Airo Super App
π Overview
This document describes the CI/CD pipeline for the Airo super app. The pipeline automatically builds, tests, and releases the app across all platforms.
π§ GitHub Actions Workflows
1. build-and-release.yml - Release Pipeline
Triggered when a tag is pushed (e.g., v1.0.0)
Builds:
- β Android APK
- β Android AAB (Google Play)
- β iOS IPA
- β Web (ZIP)
- β Windows (ZIP)
- β Linux (TAR.GZ)
Output: GitHub Release with all executables
2. ci.yml - Continuous Integration
Triggered on push to main/master/develop
Checks:
- β Flutter analyze
- β Code formatting
- β Unit tests
- β Debug APK build
- β Security scan (Trivy)
- β Linting
3. pr-checks.yml - Pull Request Validation
Triggered on pull requests
Checks:
- β PR title validation
- β Secret detection
- β File change detection
- β Build verification
- β PR comments with status
4. version-and-changelog.yml - Version Management
Manual trigger for version bumping
Actions:
- β Bump version (major/minor/patch)
- β Update pubspec.yaml
- β Generate changelog
- β Create git tag
- β Push to repository
π How to Use
Creating a Release
- Bump Version (Optional)
# Go to Actions β Version and Changelog # Click "Run workflow" # Select version type (major/minor/patch) # Wait for completion - Create Tag
git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0 - Wait for Build
- GitHub Actions automatically triggers
- Builds all platforms
- Creates release with all executables
- Download from Release Page
- Go to https://github.com/DevelopersCoffee/airo/releases
- Download desired executable
Manual Workflow Trigger
- Go to GitHub repository
- Click βActionsβ tab
- Select workflow
- Click βRun workflowβ
- Fill in inputs if needed
- Click βRun workflowβ
π Required Secrets
Add these to GitHub repository settings (Settings β Secrets and variables β Actions):
1. GOOGLE_SERVICES_JSON
Firebase configuration (base64 encoded)
# Encode your google-services.json
cat app/android/app/google-services.json | base64 -w 0
# Copy output to GitHub secret
2. GITHUB_TOKEN
Automatically provided by GitHub Actions
π¦ Release Assets
Each release includes:
| File | Platform | Format |
|---|---|---|
app-release.apk |
Android | APK |
app-release.aab |
Android | AAB (Play Store) |
app-release.ipa |
iOS | IPA |
airo-web-release.zip |
Web | ZIP |
airo-windows-release.zip |
Windows | ZIP |
airo-linux-release.tar.gz |
Linux | TAR.GZ |
RELEASE_NOTES.md |
All | Markdown |
π₯ Installation Instructions
Android
# APK (Direct installation)
adb install app-release.apk
# AAB (Google Play Store)
# Upload to Google Play Console
iOS
# Using Xcode
open app-release.ipa
# Using Apple Configurator 2
# Or use TestFlight for beta testing
Web
# Extract and open in browser
unzip airo-web-release.zip
open index.html
Windows
# Extract and run
Expand-Archive airo-windows-release.zip
cd airo-windows-release
./airo.exe
Linux
# Extract and run
tar -xzf airo-linux-release.tar.gz
chmod +x airo
./airo
π Monitoring Builds
View Build Status
- Go to GitHub repository
- Click βActionsβ tab
- View workflow runs
- Click on specific run for details
View Logs
- Click on workflow run
- Click on job
- Expand steps to see logs
Download Artifacts
- Click on workflow run
- Scroll to βArtifactsβ section
- Download desired artifact
π οΈ Troubleshooting
Build Fails
- Check workflow logs
- Verify secrets are set correctly
- Check Flutter version compatibility
- Verify dependencies are available
Release Not Created
- Verify tag format (v1.0.0)
- Check workflow permissions
- Verify GITHUB_TOKEN is available
- Check for build errors
Missing Executables
- Check individual build job logs
- Verify platform-specific dependencies
- Check artifact upload steps
- Verify storage limits not exceeded
π Build Matrix
| Platform | Runner | Time | Size |
|---|---|---|---|
| Android | ubuntu-latest | ~15 min | ~50 MB |
| iOS | macos-latest | ~20 min | ~100 MB |
| Web | ubuntu-latest | ~10 min | ~30 MB |
| Windows | windows-latest | ~15 min | ~80 MB |
| Linux | ubuntu-latest | ~15 min | ~60 MB |
π Workflow Triggers
| Workflow | Trigger | Branch |
|---|---|---|
| build-and-release | Tag push (v*) | Any |
| ci | Push | main, master, develop |
| pr-checks | Pull request | main, master, develop |
| version-and-changelog | Manual | main |
π Best Practices
- Always test locally before pushing
flutter test flutter build apk --debug - Use semantic versioning
- Major: Breaking changes
- Minor: New features
- Patch: Bug fixes
- Write meaningful commit messages
feat: add new feature fix: resolve bug docs: update documentation - Review PR before merging
- Check CI status
- Review code changes
- Verify tests pass
- Tag releases properly
git tag -a v1.0.0 -m "Release v1.0.0" git push origin v1.0.0
π Next Steps
- Add secrets to GitHub
- Test CI/CD pipeline
- Create first release
- Monitor builds
- Iterate and improve
π Support
For issues:
- Check workflow logs
- Review this documentation
- Check GitHub Actions documentation
- Create GitHub issue
Last Updated: November 2, 2025 Status: β Ready for use