In einem aktuellen Projekt mussten wir evaluieren, wie sich ein Continuous-Integration- und Deployment-System einfach aufsetzen lässt. Für mehrere Gründe würden wir normalerweise eine Inhouse-Lösung mit TeamCity empfehlen, aber der Kunde bevorzugte eine Cloud-Lösung, um Beschaffung und Installation zu verkürzen. In diesem Beitrag erkläre ich, warum und wie wir Bitrise eingerichtet haben.
BlogContinuous Integration & Deployment mit Bitrise
Update
Leider hat Bitrise die Unterstützung für Xamarin-Projekte Ende 2021 eingestellt. Während bestehende Workflows teilweise noch die inzwischen veralteten Build-Schritte enthalten, ist die dafür nötige Infrastruktur im Hintergrund nicht mehr verfügbar. Mehr über die Hintergründe dieser Entscheidung und darüber, wie Bitrise trotzdem noch für Xamarin-Builds eingesetzt werden kann, findest du im Bitrise-Blog zur Einstellung des Supports.
Zusätzliche Anforderungen an CI und CD
Zu den üblichen Anforderungen an einen CI/CD-Prozess kamen bei uns noch die folgenden Punkte hinzu:
gehostet / online
Xamarin-Unterstützung ohne großen Zusatzaufwand
einfach nutzbar
einfach einzurichten
erweiterbar
bezahlbar
Warum Bitrise?
Bitrise hatte seinen Schwerpunkt klar auf mobile App-Entwicklung gelegt und bot damals eine direkte Unterstützung für Xamarin zu einem fairen Preis. Für Einzelentwickler, Hobbyprojekte oder sehr kleine Teams gab es eine kostenlose Stufe mit nur einer gleichzeitigen Ausführung. Das bedeutet: Ein Team kann mehrere Workflows für Build und Deployment definieren, aber nur ein Workflow läuft zur selben Zeit. Wenn mehrere gleichzeitig laufen sollen, ist ein Upgrade auf die Pro-Version nötig.
Neben dem fairen Preismodell brachte Bitrise auch eine große Liste an Erweiterungen mit, die sich sehr leicht in bestehende oder neue Workflows integrieren ließen.
Einen grundlegenden Workflow für eine Xamarin-App einrichten
Nach der Registrierung auf bitrise.io landet man im Quick-Start-Guide. Dort kann man entweder eine neue App anlegen oder mit einer Beispiel-App starten. In diesem Beitrag beginnen wir mit einer neuen App, um zu zeigen, wie einfach sich mit Bitrise ein Workflow aufsetzen lässt.
Die grundlegenden Schritte sind:
Schritt 1: Quellcode-Repository konfigurieren
Schritt 2: Build-Konfiguration auswählen
Schritt 3: Webhooks einrichten
Repository konfigurieren
Im ersten Schritt wählst du aus, wo Bitrise auf den Quellcode zugreifen soll. In unserem Fall war das Bitbucket. Mit einem Klick wurde Bitbucket authentifiziert und mit dem Bitrise-Konto verbunden. Anschließend wählten wir das Repository aus, das mit diesem Workflow gebaut werden sollte. Bitrise führt dann eine Validierung aus, klont das Repository und versucht zu erkennen, um welche Art von Projekt es sich handelt. In unserem Fall wurde das Repository korrekt als Xamarin-Projekt erkannt und diese Konfiguration bereits vorausgewählt.
Build-Konfiguration auswählen
Nach der initialen Konfiguration des Repositorys mussten wir die gewünschte Build-Konfiguration auswählen und bestätigen. Zu diesem Zeitpunkt konnten wir auch direkt unsere Xamarin-Kontoinformationen hinterlegen. Dieser Schritt konnte aber übersprungen werden. Ich hatte damals die Erwartung, dass dieser Schritt in naher Zukunft nicht mehr nötig sein würde, weil Xamarin inzwischen Open Source geworden war.
Webhooks einrichten
Damit Bitrise bei Änderungen im Repository automatisch informiert wird, brauchen wir einen Webhook, der bei jedem Push auf den ausgewählten Branch ausgelöst wird. Für Bitbucket, GitHub und damals auch Visual Studio Online konnte Bitrise diesen Webhook automatisch anlegen, sofern das verbundene Konto die nötigen administrativen Rechte hatte.
Danach war alles für den ersten Lauf vorbereitet. Zeit für einen Klick auf Start a build. Wenn alles korrekt eingerichtet ist, sollte ein erfolgreicher Build-Eintrag erscheinen. Das war für uns eine der einfachsten Möglichkeiten, in weniger als einer Stunde ein Continuous-Integration- und Deployment-System aufzusetzen.
Workflow erweitern
Der grundlegende Workflow reichte zunächst aus, um das Projekt zu bauen. Danach ging es daran, ihn um weitere Dienste wie HockeyApp, NUnit Runner oder Xamarin Test Cloud zu ergänzen.
Dazu wählst du im Dashboard der App den Punkt Workflow. Dort erscheint der aktuelle Workflow, der zuvor im Guide angelegt wurde. Weitere Änderungen lassen sich über den Button Manage Workflows oben rechts vornehmen. Dieser öffnet den Workflow-Editor.
Jeder Schritt kann dort bearbeitet und per Drag and Drop verschoben werden. Zusätzliche Schritte werden über das Plus-Symbol hinzugefügt.
Xamarin.Insights zum Workflow hinzufügen
Um Xamarin.Insights zum bestehenden Workflow hinzuzufügen, klickst du nach dem Schritt Xamarin builder auf das Plus-Symbol. Im Dialog Add Step wählst du Xamarin.Insights aus und klickst auf Add to Workflow.
Danach ist Xamarin.Insights Teil des Workflows und kann über das Formular auf der rechten Seite des Workflow-Editors konfiguriert werden. Sehr unkompliziert.
Schritte, die sich aus unserer Sicht gelohnt haben
Wir haben viel experimentiert, um unseren Entwicklungsprozess möglichst flüssig, schnell und wartbar zu machen. Ein paar Schritte haben sich dabei als besonders wertvoll erwiesen, um Integration und Deployment so autonom wie möglich zu gestalten:
Script (für alles, wofür es keinen fertigen Schritt gibt)
NUnit Runner
Xamarin.Insights (ging später in HockeyApp auf)
Xamarin Test Cloud (für Android und iOS)
Set Android Manifest Version Code and Name
Sign APK
Google Play Deploy
Set Xcode Project Build Number
Deploy to iTunes Connect
HockeyApp Deploy (für Android und iOS)
Fazit
Bitrise war für uns eine ausgereifte Alternative, wenn ein gehosteter CI/CD-Prozess statt einer selbst betriebenen Lösung gefragt war. Die große Erweiterbarkeit durch eigene und vordefinierte Build-Schritte machte die Plattform leicht nutzbar und reduzierte den Pflegeaufwand. Genau deshalb haben wir sie damals Kunden empfohlen, wenn sie nach genau dieser Art von Lösung gesucht haben.
FAQ
Bitrise ist eine gehostete CI/CD-Plattform mit Fokus auf mobile App-Entwicklung. Sie bietet Workflows, Integrationen und Build-Schritte, mit denen sich Build- und Deployment-Prozesse vergleichsweise schnell einrichten lassen.
Die Grundschritte bestehen aus dem Verbinden des Quellcode-Repositorys, dem Auswählen einer passenden Build-Konfiguration und dem Einrichten von Webhooks, damit Builds bei Änderungen automatisch gestartet werden.
Nicht mehr vollständig. Bitrise hat den Support für Xamarin-Projekte Ende 2021 eingestellt. Bestehende Workflows können noch historische Schritte enthalten, die ursprüngliche Infrastruktur dahinter steht aber nicht mehr vollständig zur Verfügung.
Sebastian Seidel
Als Mobile-Enthusiast und Geschäftsführer der Cayas Software GmbH ist es mir ein großes Anliegen, mein Team und unsere Kunden zu unterstützen, neue potenziale zu entdecken und gemeinsam zu wachsen. Hier schreibe ich vor allem zur Entwicklung von Android und iOS-Apps mit Xamarin und .NET MAUI.
Als Entwickler kennen wir alle das Gerücht, dass jede Art von Test teuer ist. In diesem Beitrag möchte ich einen besseren Weg zeigen, UI-Tests zu schreiben, der sogar bei großen mobilen Apps Spaß machen kann.
In diesem Artikel lernst du, wie du Lottie-Animationen in .NET MAUI integrierst und sie mit Gesten, Scroll-Positionen und CarouselViews verknüpfst. Du erfährst, wie Animationen per Tap, durch Tippen & Halten, über Scroll-Interaktionen sowie beim Wechseln von CarouselView-Seiten gesteuert werden. Zusätzlich bekommst du komplette XAML- und C#-Beispiele, Best Practices und fertige Demo-Videos, um interaktive und moderne UI-Erlebnisse in deiner MAUI-App umzusetzen.
Ich arbeite derzeit an der Portierung einer Xamarin Forms App zu .NET MAUI. Die App verwendet auch Karten von Apple oder Google Maps, um Standorte anzuzeigen. Obwohl es bis zur Veröffentlichung von .NET 7 keine offizielle Unterstützung in MAUI gab, möchte ich Ihnen eine Möglichkeit zeigen, Karten über einen benutzerdefinierten Handler anzuzeigen.