So erstellen Sie mit Jenkins und Fastlane ein iOS-On-Demand-Build-System

In diesem Artikel geht es darum, iOS-Builds über Jenkins BOT remote zu erstellen, ohne dass ein Entwickler erforderlich ist.

Bevor ich anfange, möchte ich sagen, dass dies mein erster Artikel ist. Fühlen Sie sich also frei, einen Kommentar zu hinterlassen, wenn etwas verbessert werden kann :)

Warum ist das eine gute Idee?

Wenn ein Entwickler ein Feature erstellt, testet er es in der Qualitätssicherung, bevor er es in die Produktion überträgt. Daher muss ein Build mit einigen Testkonfigurationen für das QA-Team freigegeben werden.

Xcode (die IDE) benötigt viel Zeit, um diesen Build zu kompilieren und zu generieren. Dies bedeutet, dass jede Person, die den Build benötigt, die IDE installieren, das Repository klonen, eine Signaturidentität und ein Zertifikat erstellen und den Build dann selbst erstellen muss. Oder verlassen Sie sich darauf, dass der Entwickler eine für ihn erstellt.

Während des Build-Erstellungsprozesses ist die IDE unbrauchbar. Dies wirkt sich stark auf die Produktivität des Entwicklers aus. In meiner Firma beträgt die durchschnittliche Bauzeit einer .ipa etwa 20 Minuten. Im Durchschnitt erstellt ein Entwickler täglich 2-3 Builds.

Dies bedeutet, dass 5 Arbeitsstunden pro Woche verschwendet werden.

Aber was wäre, wenn es ein automatisiertes System gäbe, das die Builds selbst generieren könnte? Dies würde die Entwickler von dieser Verantwortung befreien. Es würde auch jedem ermöglichen, leicht einen Build zu bekommen.

Jenkins ist eine der Lösungen für unser Problem.

Durch die einfache Bereitstellung von Builds für Tester und Entwickler wird sichergestellt, dass Benutzer Funktionen schneller testen und einfacher an die Produktion liefern können. Dies verbessert die Produktivität der Entwicklungsteams. Es verbessert auch die Qualität der Produkte, die in die Produktion gebracht werden.

Fangen wir jetzt an.

Voraussetzungen

Sie benötigen:

  • macOS Machine (es ist besser, es auf Mac-Produkten auszuführen)
  • 10 GB Laufwerk (für Jenkins)
  • Java 8 installiert (entweder ein JRE oder Java Development Kit (JDK) ist in Ordnung)

    //www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

Zusätzliche Plugins müssen installiert werden

  • Homebrew
  • wget
  • RVM Plugin

    Installationsanleitung

    //rvm.io/rvm/security

Erstellen Sie einen Zweig mit einer Datei mit dem Namen Jenkinsfileund dem Beispielcode:

node {

sh ‘echo HelloWorld’

}

Nennen wir es Jenkins-Integration . Ich werde später darauf zurückkommen.

  • Installieren Sie Xcode aus dem App Store auf Ihrem Computer
  • Installieren Sie Fastlane auf Ihrem Computer. Jenkins verwendet intern Fastlane-Befehle, um Builds zu generieren.

Lassen Sie uns nun Schritt für Schritt durchgehen.

Schritt 1. Installieren Sie Jenkins auf Ihrem Computer

Sie können auf einem MacBook oder Mac-Mini installieren. Mac-mini wird bevorzugt, da es am Leben gehalten werden kann.

Laden Sie Jenkins -> //jenkins.io/ herunter

Führen Sie java -jar jenkins.war --httpPort = 8080 in der Befehlszeile aus. Wenn im Terminal eine Fehlermeldung angezeigt wird, versuchen Sie es mit einem anderen Port (z. B. 9090), da manchmal einige Ports nicht verfügbar sind.

Navigieren Sie zu // localhost: 8080 und befolgen Sie die Anweisungen, um die Installation abzuschließen.

Fügen Sie dann Administratoranmeldeinformationen hinzu und vergessen Sie diese nicht (wie ich: P). Später können Sie zu Jenkins> Jenkins verwalten> Benutzer verwalten gehen und Ihre Änderungen bei Bedarf vornehmen.

Schritt 2. Erstellen Sie Ihre erste Pipeline

Erstellen Sie einen neuen Job und wählen Sie Pipeline-Projekt .

So checken Sie Ihr Projekt unter dem Abschnitt Pipeline, in Definition, wählen Pipeline Script von SCM und in SCM wählen Git

Fügen Sie dann Ihre Repo-URL hinzu und fügen Sie die Anmeldeinformationen hinzu, wenn es sich um ein privates Repo handelt. Fügen Sie in zu erstellenden Zweigen * / jenkins-Integration hinzu,der Zweig, den wir zuvor erstellt haben.

Stellen Sie sicher, dass Script Path Jenkinsfile ist, das wir in unserem neuen Zweig erstellt haben. Alle Skripte werden in diese Jenkins-Datei geschrieben.

Klicken Sie auf Speichern und Jenkins scannt automatisch Ihr Repo mit dem genannten Zweig und führt das Jenkinsfile-Skript aus.

Jetzt können wir unsere Jenkins-Datei so konfigurieren, dass Builds erstellt werden

Schritt 3. Fügen Sie dem Job Parameter hinzu

Benutzereingaben sind erforderlich für

  • Ast
  • Umgebung (Test oder Produkt)

Dazu müssen wir unser Projekt so konfigurieren, dass Eingabeparameter für einen Job verwendet werden.

Gehen Sie zum Abschnitt Konfigurieren und aktivieren Sie das Kontrollkästchen Dieses Projekt ist parametrisiert .

Wählen Sie dann Parameter hinzufügen und fügen Sie diesen entsprechend hinzu.

Wenn Sie auf Speichern klicken, wird auf der linken Seite ein neuer Abschnitt angezeigt - & g t; Erstellen Sie mit Parametern . Dies ist die Benutzeroberfläche zum Erstellen von Builds.

Diese Parameter werden in unserem Jenkins-Skript verwendet.

Schritt 3. Konfigurieren Sie das Jenkins-Skript

Erstellt mehrere Schritte in unserer Jenkins-Datei, von denen jeder eine Verantwortung hat, und erstellt eine schöne Benutzeroberfläche, wenn sie erstellt wird.

Gehen Sie zu Ihrer Jenkins-Datei und ersetzen Sie das Skript durch Folgendes:

Überprüfen Sie zunächst den Zweig über den zuvor hinzugefügten Parameter. Fügen Sie Ihr Repo und GitHub-Token hinzu.

Jetzt sollte das GitHub-Token für andere nicht sichtbar sein. Gehen Sie dazu zu Jenkins verwalten - & g t; Konfigurieren Sys tem -> Globale prope rties ein d Github hinzufügen Token als Umgebungsvariable.

Rufen Sie dann das Skript auf, um die Umgebung zu ändern.

Rufen Sie als Nächstes fastlane auf, um zu bereinigen (abgeleitete Daten entfernen, bereinigen, .dsym-Dateien löschen usw.).

Wenn eine Codesignatur erforderlich ist, führen Sie dies als Nächstes mit Ad-hoc aus . Sie können die Entwicklung oder den App Store je nach Ihren Anforderungen verwenden.

Erstellen Sie als Nächstes Builds mit dem Befehl gym in fastlane.

Schritt 4. Führen Sie den Job aus

Jetzt ist unser Skript fertig. Gehen Sie zu Jenkins und öffnen Sie Build with Parameters.

Es beginnt mit der Ausführung des Skripts und erstellt eine schöne Benutzeroberfläche mit mehreren Schritten, wie in der Jenkins-Datei erwähnt.

Wenn der Auftrag abgeschlossen ist, wechseln Sie zum Projekt Benutzer / agammahajan / .jenkins / workspace / iOS_Build_Systems

und Sie werden sehen, dass die .ipa erstellt wurde. Voilà!

Jetzt können Sie diesen Build mit anderen teilen. Sie können das Slack-Plugin verwenden, um die Builds auf Slack hochzuladen, wenn Sie möchten.

Einpacken

Abschließend können wir sehen, wie einfach es ist, einen automatisierten Bot einzurichten, mit dem jede Person Builds in nur zwei Schritten auslösen kann: Zweig geben-> Testumgebung-> Fertig.

Dies hat mir und meinen Kollegen geholfen, die Produktivität zu verbessern und schneller zu versenden. Dies hat auch dem QA-Team geholfen, sodass sie nicht jedes Mal auf Entwickler angewiesen sind, wenn sie etwas testen müssen. Ich hoffe, es kommt Ihnen und Ihrem Unternehmen auch zugute.

Von hier aus sind die Möglichkeiten endlos.

  1. Sie können geplante Jobs erstellen, um nächtliche Builds zu generieren.
  2. Laden Sie Builds direkt in den App Store hoch.
  3. Zwischenspeichern Sie die Builds, sodass Builds mit derselben Konfiguration nicht erneut generiert werden.
  4. Verteilen des IPA im Haus für die OTA-Installation (Over the Air).
  5. Erstellen Sie eine CI-CD-Pipeline, um bei jedem Commit automatisierte Tests durchzuführen und diese produktionsbereit zu machen.