Bitrise är en specialiserad CI/CD-plattform för mobilutveckling, byggd kring färdiga Steps — förkonfigurerade moduler för att bygga, signera och publicera iOS- och Android-appar. Enligt Bitrise, 2024 stödjer plattformen över 400 färdiga Steps och integreras med Xcode, Gradle, Fastlane, Firebase och App Store Connect.
Huvudpunkter
Bitrise är en CI/CD-plattform som lanserades 2016 och är helt fokuserad på mobilutveckling. Till skillnad från universallösningar som GitHub Actions och GitLab CI är Bitrise från början utformad för att automatisera byggning av iOS- och Android-appar. Plattformen körs i molnet och tillhandahåller egna värdbaserade runners med macOS och Linux. Bitrise stödjer alla populära mobila stackar: Swift, Kotlin, Flutter, React Native, Cordova och Xamarin.
Den främsta fördelen med Bitrise är de förkonfigurerade Step-mallarna för typiska mobilutvecklingsuppgifter: Xcode build, Gradle assemble, Fastlane, Firebase Distribution, TestFlight, Google Play. Konfiguration av pipeline tar minuter via den visuella redigeraren, och YAML-konfigurationen genereras automatiskt i filen bitrise.yml. För avancerade användare finns en YAML-redigerare med autokomplettering.
Bitrises arkitektur bygger på två nyckelkoncept: Workflow och Step. Workflow är en sekvens av Steps som definierar pipeline. Varje projekt kan ha flera Workflows: primary (huvudbyggning), deploy (publicering), test (endast tester). Workflow startas av triggers: push, PR, tag eller enligt schema. Workflow kan startas manuellt från webbgränssnittet, vilket är användbart för ad-hoc-byggen.
Step är en atomisk modul som utför en uppgift. Stegen kan dras i den visuella redigeraren, deras ordning och konfiguration kan ändras. Bitrise tillhandahåller Steps för Xcode Archive & Export, Gradle Runner, CocoaPods Install, Firebase Distribution, Slack-meddelanden. Communityn skapar också Steps — de är tillgängliga via Step Library. Varje Step har obligatoriska och valfria indataparametrar, samt utdatavariabler som kan användas av efterföljande Steps.
Bitrise stödjer konceptet Pipeline — sammanslagning av flera Workflows till en pipeline. En Pipeline kan inkludera huvudbyggning för alla plattformar och separata workflows för driftsättning och testning. Detta möjliggör skapandet av komplexa CI/CD-processer där en byggning startar en annan. Bitrise Stacks bestämmer den förinstallerade programvaran på runner: Xcode, Android SDK, Flutter, Node.js och andra verktyg.
Bitrise integreras med GitHub, GitLab, Bitbucket och Azure DevOps. Vid anslutning av repository detekterar Bitrise automatiskt projekttypen (iOS, Android, Flutter) och föreslår en Workflow-mall. För privata repositories begär Bitrise åtkomst via OAuth eller SSH-nyckel. Anslutning av flera repositories till en app stöds.
Efter anslutning skapar Bitrise en webhook i repository för automatisk start av byggen vid push och PR. Varje bygge får ett unikt nummer, loggar och artefakter. Gränssnittet gör det möjligt att visa bygghistorik, jämföra ändringar och starta om misslyckade byggen. Bitrise stödjer även schemalagda byggen för regelbundna nattbyggen och integration med Jira för spårning av commits.
Code signing för iOS är en av de svåraste CI/CD-uppgifterna, och Bitrise löser det extremt enkelt. Plattformen lagrar certifikat och provisioning profiles i krypterad form, installerar dem automatiskt i lämplig keychain före bygget och exporterar den signerade IPA. Steget Certificate and Profile Installer laddar ner filer från Bitrises lagring och konfigurerar Xcode. Certifikattyperna Development, AdHoc, AppStore och Enterprise stöds.
För publicering i App Store Connect tillhandahåller Bitrise Steps för uppladdning av IPA via Xcode Archive & Export. Google Play-publicering använder Gradle Runner med signering via Keystore, varefter APK/AAB laddas upp till Google Play Console via Google Play Deploy Step. För Firebase App Distribution räcker det att ange Firebase Token och testargrupp. Bitrise automatiserar uppdatering av byggversioner (version number och build number) före varje publicering.
Certifikat laddas upp i avsnittet Code Signing i webbgränssnittet: P12 med privat nyckel, provisioning profile (.mobileprovision), Keystore (.jks/.keystore) för Android. Bitrise installerar automatiskt iOS-certifikat i keychain vid varje start av Workflow och exporterar den signerade appen. För Android räcker det att ladda upp Keystore-filen — Bitrise skickar den till Gradle via miljövariabler under bygget.
Låt oss titta på ett Workflow för en Flutter-app som bygger och publicerar versioner för iOS och Android. Bitrise detekterar automatiskt Flutter-projektet och föreslår lämpliga Steps. Workflow inkluderar installation av Flutter, cachning av pub-cache, byggning, testning och driftsättning. För iOS-bygge krävs dessutom code signing-certifikat som Bitrise laddar automatiskt.
Vid byggning av Flutter-appar stödjer Bitrise separat konfiguration för plattformar. Android-bygge utförs på Linux-runner med Flutter SDK, iOS på macOS-runner. Workflow kan inkludera villkorliga Steps: build_android och build_ios som endast körs på respektive plattformar. För React Native-projekt erbjuder Bitrise en liknande uppsättning Steps med npm/nvm och Metro bundler.
format_version: 13
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
trigger_map:
- push_branch: main
workflow: primary
workflows:
primary:
steps:
- activate-ssh-key@4:
run_if: true
- git-clone@8: {}
- flutter-installer@0:
inputs:
- version: 3.24.0
- flutter-build@0:
inputs:
- platform: both
- ios_output_type: archive
- deploy-to-bitrise-io@2: {}
Efter bygget kan Step Firebase App Distribution läggas till för iOS och Android. Steget tar emot firebase_token, app_id och testers_group. Bitrise ersätter värden från Secrets — säker lagring av tokens garanterar att de inte hamnar i loggar.
- firebase-app-distribution@1:
inputs:
- firebase_token: $FIREBASE_TOKEN
- app_id: $FIREBASE_IOS_APP_ID
- testers_group: qa-team
- release_notes: |
Build $BITRISE_BUILD_NUMBER
Korrekt hantering av konfidentiell data är grunden för CI/CD-säkerhet. Bitrise Secrets är krypterade och inte läsbara efter lagring. När en ny app skapas erbjuder Bitrise att importera secrets från ett annat projekt eller manuell inställning. För stora team finns funktionen Environment Groups — centraliserad hantering av variabler och secrets för en grupp appar.
Bitrise tillhandahåller inbyggd Secrets-lagring för konfidentiell data: API-nycklar, Firebase-tokens, Keystore-lösenord, Apple ID. Secrets ställs in som nyckel-värdepar i webbgränssnittet och maskeras i byggloggar. De är tillgängliga på appnivå och Workflow-nivå. Secrets kan inte läsas efter lagring — de kan bara skrivas över.
Environment Variables (utan Secret-etikett) används för konfigurationer: Xcode-version, projektsökväg, byggschema. Bitrises miljövariabler (BITRISE_BUILD_NUMBER, BITRISE_APP_TITLE) tillhandahåller metainformation om bygget. Secrets krypteras vid lagring och dekrypteras endast på runner under körning av Workflow. För grupphantering av variabler stödjer Bitrise Environment Groups — uppsättningar av variabler som kan tillämpas på flera appar samtidigt.
Hantering av iOS-certifikat via Bitrise förtjänar särskild uppmärksamhet. Plattformen installerar automatiskt P12 och provisioning profile i systemets keychain före bygget. För Android används Keystore-filen som laddas upp i Code Signing-sektionen. Varje certifikatfil lagras i krypterad form och dekrypteras endast under bygget.
- google-play-deploy@3:
inputs:
- package_name: com.example.app
- service_account_json_key: $SERVICE_ACCOUNT_KEY
- app_file: $BITRISE_APK_PATH
Bitrise erbjuder olika stackar för bygge — förinstallerade bilder med verktyg och SDK:er. Stackar finns tillgängliga för Xcode (versioner 14, 15, 16 med iOS SDK 17, 18), för Android (med olika versioner av SDK och NDK), för Flutter, React Native och Kotlin Multiplatform. Varje stack har en beskrivning av förinstallerade verktyg och versioner.
Valet av stack påverkar byggtiden och kompatibiliteten med projektet. Bitrise uppdaterar regelbundet stackar och lägger till nya versioner av verktyg. En specifik stackversion kan fixeras i bitrise.yml för att undvika oväntade ändringar vid plattformsuppdateringar. För anpassade beroenden används Script Step som installerar nödvändiga paket före huvudbygget. Bitrise stödjer även Docker-bilder för Linux-stackar, vilket möjliggör användning av anpassad miljö för Android-byggen.
Vanliga frågor
Bitrise erbjuder en gratis plan med 90 minuters byggtid per månad och en concurrent build. Developer ($79/månad) inkluderar 3000 minuter, upp till 5 concurrent builds och alla integrationer. Enterprise — individuell prissättning.
Bitrise stödjer iOS (Swift, Objective-C), Android (Kotlin, Java), Flutter, React Native, Cordova, Ionic och Xamarin. För varje plattform finns förinstallerade verktyg och Workflow-mallar.
Bitrise tillhandahåller macOS-runners för iOS-bygge utan extra konfiguration. Plattformen hanterar själv macOS-infrastrukturen — runner väljs automatiskt baserat på appens stack.
Bitrise lagrar certifikat i krypterad form och installerar dem automatiskt i keychain före bygget via Step Certificate and Profile Installer. För Android på samma sätt — Keystore laddas upp och används av Gradle vid signering.
Ja, Bitrise stödjer anpassade Steps via Script Step (bash-skript) och anpassad Step Library från GitHub. Du kan också skapa din egen Step enligt Bitrises dokumentation och publicera den i Step Library.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också