Setting up CI/CD for an iOS application via Bitrise

NOVASOLUTIONS.TECHNOLOGY is engaged in the development, support and maintenance of iOS, Android, PWA mobile applications. We have extensive experience and expertise in publishing mobile applications in popular markets like Google Play, App Store, Amazon, AppGallery and others.
Development and support of all types of mobile applications:
Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Showing 1 of 1 servicesAll 1735 services
Setting up CI/CD for an iOS application via Bitrise
Medium
~2-3 business days
FAQ
Our competencies:
Development stages
Latest works
  • image_mobile-applications_feedme_467_0.webp
    Development of a mobile application for FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Development of a mobile application for XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Development of a mobile application for RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Development of a mobile application for ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Development of a mobile application for Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Development of a mobile application for the FLAVORS company
    445

CI/CD Setup for iOS Applications via Bitrise

Bitrise is cloud CI/CD tailored for mobile development. Its key difference from GitHub Actions or GitLab CI: all steps (Steps)—ready-made blocks in Workflow Editor with UI configuration, and most mobile scenarios configure without writing yaml from scratch. For teams without DevOps expertise—this lowers the barrier to entry.

Workflow Editor and Configuration Structure

Bitrise stores configuration in bitrise.yml at repository root. Edit via UI or directly in yaml. Basic iOS workflow:

workflows:
  primary:
    steps:
    - activate-ssh-key: {}
    - git-clone: {}
    - certificate-and-profile-installer: {}
    - cocoapods-install:
        inputs:
        - is_cache_disabled: "false"
    - xcode-test:
        inputs:
        - scheme: MyApp
        - simulator_device: iPhone 15
    - xcode-archive:
        inputs:
        - scheme: MyApp
        - distribution_method: ad-hoc
    - deploy-to-bitrise-io: {}
    - firebase-app-distribution:
        inputs:
        - app: $FIREBASE_APP_ID
        - groups: qa-team

certificate-and-profile-installer—Bitrise-specific Step, downloads certificates from Bitrise Code Signing tab. Upload .p12 and .mobileprovision files via UI or API. Simpler than fastlane match, but means certificate storage on Bitrise servers.

Code Signing Without fastlane match

Bitrise has built-in Code Signing Manager. Upload via Web UI:

  1. Distribution certificate (.p12 + passphrase)
  2. Provisioning profile (.mobileprovision)

xcode-archive Step automatically uses uploaded certificates through BITRISE_CERTIFICATE_URL and BITRISE_CERTIFICATE_PASSPHRASE environment variables. Disable Xcode Automatic Signing in xcode-archive:

- xcode-archive:
    inputs:
    - automatic_code_signing: api-key  # or certificate

api-key mode uses App Store Connect API Key (best option—doesn't expire like certificates).

Parallel Workflows and Triggers

Bitrise supports multiple workflows with different triggers:

trigger_map:
- push_branch: main
  workflow: deploy
- push_branch: "feature/*"
  workflow: test-only
- pull_request_target_branch: main
  workflow: pr-check

test-only workflow runs tests only without archiving—saves ~10 minutes on each feature branch push.

Caching

Bitrise uses cache through save-cache / restore-cache Steps:

- restore-cache:
    inputs:
    - key: "cocoapods-{{ checksum \"Podfile.lock\" }}"
    - path: ./Pods
- cocoapods-install: {}
- save-cache:
    inputs:
    - key: "cocoapods-{{ checksum \"Podfile.lock\" }}"
    - path: ./Pods

SPM dependencies cache through ~/Library/Developer/Xcode/DerivedData—can add to path similarly.

Limitations vs Self-Hosted

Bitrise is cloud only. Runners: Xcode 15 (macOS 13), Xcode 16 (macOS 14), etc.—selected in machine type. Fastest—M2 Elite XL (~4 minutes on average project archiving). Cost depends on plan; with active development on 5+ person teams, cloud minutes run out quickly.

For every-commit builds + nightly UI tests on real devices—Bitrise + Device Testing (Firebase Test Lab or own device farm).

Common Setup Issues

  • Bundle ID mismatch in provisioning profile and PRODUCT_BUNDLE_IDENTIFIER in xcconfig—xcode-archive fails with No profile for... signed for running on device
  • CocoaPods version on Bitrise stack differs from local—add gem install cocoapods --version X.X.X in Script Step
  • BITRISE_SCHEME not set—xcode-test uses first available scheme, which may not be correct

Timeline

Basic Bitrise setup (test + archive + TestFlight): 2–4 days. Full configuration with parallel workflows, Device Testing, caching, Slack/Jira integration: 1–1.5 weeks. Cost calculated individually.