Skip to content

Auto-Deployment to App Stores (Microsoft Store, Mac App Store) #3Β #1

Description

@puzzlers-tech

πŸͺ Store Deployment Automation Setup

Setting up automated deployment pipelines for distributing Maraikka to various app stores alongside direct GitHub releases.

🎯 Objective

Implement automated submission and deployment to:

  • 🍎 Mac App Store (macOS)
  • πŸͺŸ Microsoft Store (Windows)
  • πŸ“¦ Linux Package Repositories (Snap Store, Flathub)

πŸ” Prerequisites & Setup Required

Apple App Store Connect

  • Apple Developer Account - Enterprise/Individual ($99/year)
  • App Store Connect Access - Admin role required
  • App-Specific Password - Generate for automation
  • API Key - Create App Store Connect API key
    • Key ID
    • Issuer ID
    • Private key (.p8 file)
  • Certificates & Profiles
    • Mac App Distribution certificate
    • Mac App Store provisioning profile
    • App Sandbox entitlements configured

Microsoft Partner Center

  • Microsoft Partner Account - Developer registration required
  • Azure AD Application - For automated API access
    • Application ID
    • Directory (tenant) ID
    • Client secret
  • Package Identity - Reserve app name in Partner Center
  • Windows App Certification - Ensure app passes certification

Linux Package Repositories

  • Snapcraft Account - For Snap Store deployment
  • Flathub GitHub - For Flatpak distribution
  • GPG Keys - For package signing

πŸ”§ Technical Implementation

1. Repository Secrets Configuration

Add these secrets to GitHub repository:

Apple App Store

APPLE_API_KEY_ID=ABC123DEF4
APPLE_API_KEY_ISSUER_ID=12345678-1234-1234-1234-123456789012
APPLE_API_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----...-----END PRIVATE KEY-----
APPLE_DEVELOPER_TEAM_ID=TEAM123456
MAC_APP_STORE_CERT=<base64-encoded-certificate>
MAC_APP_STORE_CERT_PASSWORD=certificate-password

Microsoft Store

MS_PARTNER_CENTER_CLIENT_ID=12345678-1234-1234-1234-123456789012
MS_PARTNER_CENTER_CLIENT_SECRET=client-secret-value
MS_PARTNER_CENTER_TENANT_ID=12345678-1234-1234-1234-123456789012
MS_STORE_PACKAGE_IDENTITY=MaraikkaLabs.Maraikka_1234567890abc

Linux Repositories

SNAPCRAFT_TOKEN=snapcraft-token-here
FLATHUB_GPG_PRIVATE_KEY=gpg-private-key-here
FLATHUB_GPG_PASSPHRASE=gpg-passphrase-here

2. Workflow Enhancements

Extend .github/workflows/release.yml to include store deployment steps:

Mac App Store Deployment

  • Add Mac App Store build job
  • Implement altool or xcrun altool for automated upload
  • Add validation and submission steps
  • Configure automated release after review approval

Microsoft Store Deployment

  • Add Microsoft Store build job (MSIX packaging)
  • Implement Store Broker API integration
  • Add package validation and submission
  • Configure certification monitoring

Linux Store Deployment

  • Add Snap Store deployment job
  • Add Flathub deployment preparation
  • Implement automated snap publishing
  • Configure Flatpak manifest generation

3. Build Configuration Updates

Update package.json electron-builder config:

Mac App Store specific:

"mas": {
  "category": "public.app-category.utilities",
  "hardenedRuntime": false,
  "entitlements": "assets/entitlements.mas.plist",
  "entitlementsInherit": "assets/entitlements.mas.inherit.plist",
  "provisioningProfile": "assets/embedded.provisionprofile"
}

Microsoft Store specific:

"appx": {
  "applicationId": "MaraikkaApp",
  "identityName": "MaraikkaLabs.Maraikka",
  "publisher": "CN=Maraikka Labs",
  "publisherDisplayName": "Maraikka Labs"
}

πŸ“‹ Implementation Checklist

Phase 1: Account Setup

  • Create/verify Apple Developer account
  • Set up Microsoft Partner Center account
  • Register Linux package repository accounts
  • Generate required API keys and certificates

Phase 2: Certificate & Profile Management

  • Create Mac App Store distribution certificate
  • Generate App Store provisioning profiles
  • Set up Windows code signing certificate
  • Configure GPG keys for Linux packages

Phase 3: CI/CD Integration

  • Add store deployment jobs to GitHub Actions
  • Configure automated build β†’ test β†’ deploy pipeline
  • Set up environment-specific deployments (staging vs production)
  • Implement rollback procedures

Phase 4: Testing & Validation

  • Test Mac App Store submission process
  • Validate Microsoft Store certification
  • Test Linux package installations
  • Verify update mechanisms work correctly

Phase 5: Monitoring & Maintenance

  • Set up deployment status monitoring
  • Configure failure notifications
  • Create deployment documentation
  • Set up periodic certificate renewal reminders

πŸ§ͺ Testing Strategy

Store-Specific Testing

  • Mac App Store: Sandbox testing with TestFlight-equivalent
  • Microsoft Store: Package validation and certification testing
  • Linux: Test installations across different distributions

Automation Testing

  • Test deployment pipeline with beta releases
  • Validate rollback procedures
  • Test failure scenarios and error handling
  • Verify certificate/credential rotation

πŸ“š Documentation Needed

  • Store deployment runbook
  • Certificate management procedures
  • Troubleshooting guide for store rejections
  • Update versioning strategy for stores
  • Create store submission checklists

⚠️ Considerations & Constraints

Store Review Processes

  • Mac App Store: 24-48 hours review time
  • Microsoft Store: 3-7 days certification process
  • Linux Stores: Varies by repository

Store-Specific Requirements

  • Mac App Store: Requires app sandboxing, may limit file access
  • Microsoft Store: Requires MSIX packaging, may need UWP compliance
  • Linux: Package format requirements vary by distribution

Cost Implications

  • Apple Developer Program: $99/year
  • Microsoft Partner Center: One-time $19 registration
  • Code signing certificates: $200-400/year

🎯 Success Metrics

  • Deployment Success Rate: Target >95% successful deployments
  • Review Approval Rate: Target >90% first-time approval
  • Time to Market: Reduce manual deployment time by 80%
  • Update Frequency: Enable weekly/bi-weekly store updates

πŸ“ž Next Actions

  1. Immediate: Set up developer accounts and gather credentials
  2. Week 1: Configure certificates and API access
  3. Week 2: Implement store deployment workflows
  4. Week 3: Test automation with beta releases
  5. Week 4: Deploy first automated store release

Priority: High
Estimated Effort: 2-3 weeks
Dependencies: Developer account approvals, certificate generation
Risk Level: Medium (store review processes can be unpredictable)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions