Skip to content

MobileCtlModern Mobile DevOps

Build, version, and deploy iOS & Android apps with a single command. Production-ready automation for mobile development.

MobileCtl

Why MobileCtl?

Mobile app deployment shouldn't be complicated. MobileCtl simplifies your entire DevOps pipeline into one setup wizard and one deployment command.

5-Minute Setup

Start with the interactive setup wizard:

bash
mobilectl setup

The wizard auto-detects your project and generates everything you need:

  • Complete mobileops.yaml configuration
  • GitHub Actions or GitLab CI workflows
  • Deployment groups and strategies
  • Version management settings

One-Command Deployment

After setup, deploy with a single command:

bash
# Complete release: version bump + changelog + build + deploy
mobilectl deploy --bump-version patch --changelog --all-flavors

That's it. One command to go from code to production.

The deploy command intelligently:

  • 🔢 Bumps version if you specify --bump-version
  • 📝 Generates changelog if you add --changelog (or -C)
  • 🏗️ Builds your apps automatically (unless you add --skip-build)
  • 📦 Deploys to all configured destinations

Or use commands separately for more control:

bash
mobilectl version bump patch     # Manual version control
mobilectl changelog generate     # Separate changelog step
mobilectl build all             # Build only
mobilectl deploy --all-flavors  # Deploy all flavors
mobilectl deploy -G production  # Deploy specific group

Key Features

🎯 Zero Configuration

Auto-detects your project structure and provides smart defaults. Get started in seconds:

bash
mobilectl build android

🔄 Backup & Restore

Every operation creates automatic backups. Made a mistake? Restore instantly:

bash
mobilectl version restore
mobilectl changelog restore

🌍 Environment Variables

Keep secrets safe with environment variable support:

yaml
build:
  android:
    keyPassword: ${MOBILECTL_KEY_PASSWORD}
    storePassword: ${MOBILECTL_STORE_PASSWORD}

📊 Comprehensive Reporting

Generate beautiful HTML or JSON reports for every build:

yaml
report:
  enabled: true
  format: html
  output_path: ./build-reports

Trusted by Developers

89%
Test Coverage
0
Ruby Dependencies
85+
Unit Tests
SOLID
Architecture

Quick Example

Generate Configuration with Setup Wizard

Run the interactive wizard:

bash
mobilectl setup

It generates your complete mobileops.yaml:

yaml
# Generated by mobilectl setup wizard
app:
  name: MyAwesomeApp
  identifier: com.example.awesome
  version: 1.0.0

build:
  android:
    enabled: true
    flavors: 
        - free
        - paid
        - premium
    defaultFlavor: free
    defaultType: release
  ios:
    enabled: true
    project_path: ios/Runner.xcworkspace
    scheme: Runner

deploy:
  enabled: true
  default_group: production  # Default group when no CLI flag provided

  flavor_groups:
    production:
      name: Production
      description: Production builds for release
      flavors:
        - free
        - paid
        - premium

    testing:
      name: Testing
      description: Internal testing builds
      flavors:
        - qa
        - staging

  android:
    firebase:
      enabled: true
      service_account: credentials/firebase-adminsdk.json
      testGroups:
        - qa-team
        - beta-testers

    play_console:
      enabled: true
      service_account: credentials/play-console.json

  ios:
    testflight:
      enabled: true
      api_key_path: credentials/app-store-connect-api-key.json
      team_id: ABC123DEF

version:
  enabled: true
  auto_increment: true
  bump_strategy: patch

changelog:
  enabled: true
  format: markdown
  output_file: CHANGELOG.md

Deploy Everything with One Command

bash
# Deploy production group (uses default_group from config)
mobilectl deploy --bump-version patch --changelog

# Or deploy all flavors explicitly
mobilectl deploy --all-flavors --bump-version patch --changelog

# Or deploy specific group
mobilectl deploy --flavor-group testing

This will:

  1. Bump the version to 1.0.1
  2. Generate a changelog from commits
  3. Build selected flavors (production, testing, or all)
  4. Sign all artifacts
  5. Upload to Firebase & TestFlight
  6. Update Play Console
  7. Send notifications (if configured)
  8. Generate deployment reports

What's New in v0.3.2

Production Ready Changelog

  • ✅ Generate changelog from conventional commits
  • ✅ Group by commit type with emoji
  • ✅ Multi-version append mode
  • ✅ Automatic backups with restore
  • ✅ Comprehensive validation
  • ✅ 89% test coverage

Get Started in 5 Minutes

The easiest way to get started:

bash
# Clone or download MobileCtl
git clone https://github.com/AhmedNader65/MobileCtl.git
cd MobileCtl && ./gradlew build

# Run the setup wizard
cd /path/to/your/mobile/project
mobilectl setup

The wizard will:

  1. Auto-detect your project type (Android, iOS, Flutter, React Native)
  2. Find existing credentials and configuration
  3. Guide you through 8 setup phases
  4. Generate complete mobileops.yaml
  5. Optionally create CI/CD workflows

Learn about the Setup Wizard →

Option 2: Manual Configuration

bash
# Create your config manually
cat > mobileops.yaml << EOF
app:
  name: MyApp
  identifier: com.example.myapp
  version: 1.0.0

build:
  android:
    enabled: true
    defaultType: release

deploy:
  android:
    firebase:
      enabled: true
      testGroups: [qa-team]
EOF

# Start building and deploying
./mobilectl.sh build
./mobilectl.sh deploy --all-flavors

Read the full guide →

Released under the MIT License.