Wie bekomme ich Travis CI, um auf Github gehostete xcode-Projekte zu erstellen und zu testen?

8

Ich habe Open-Source-Code auf github gehostet, um eine blockbasierte Kategorie zu UITextField hinzuzufügen . Ich habe eine .travis.yml Datei hinzugefügt, um Travis CI zu bekommen, um den Code bei jedem Push zu erstellen und auszuführen. Link zur Travis CI-Warnung . Es baut das Projekt erfolgreich auf. Die Warnung, die ich bekomme, wenn ich das .travis.yml-Skript laufe, ist:

%Vor%

Das Beispielprojekt, das ich ausführen möchte, befindet sich im Ordner / UITextView Blocks Beispiel / Wie kann ich der .travis.yml-Datei hinzufügen, um dieses Projekt auszuführen? Meine travis.yml-Datei besteht jetzt aus

%Vor%     
hakonbogen 26.10.2013, 14:32
quelle

2 Antworten

16

Update 2017

skypecakes erwähnt in den Kommentaren :

  

Für alle, die XCode 8 und höher verwenden: xctool wird nicht mehr unterstützt und funktioniert nicht.
  Verwenden Sie stattdessen xcodebuild .

Ursprüngliche Antwort (2013)

Sie können dieses Tutorial überprüfen, das erklärt:

  

xctool ist eine ausgezeichnete Wahl für die Ausführung Ihrer Tests unter einem Continuous Integration Server wie Travis CI oder Jenkins.
Damit Sie Ihre Tests in einer Umgebung mit kontinuierlicher Integration ausführen können, müssen Sie Shared Schemes erstellen für Ihr Anwendungsziel und stellen Sie sicher, dass alle Abhängigkeiten (wie CocoaPods) explizit zum Schema hinzugefügt werden.   Um dies zu tun:

     
  1. Öffnen Sie das Blatt "Schemata verwalten", indem Sie das Menü "Produkt" & gt; Schemas & gt; Schemata verwalten ...
  2.   
  3. Suchen Sie Ihr Anwendungsziel in der Liste. Stellen Sie sicher, dass das Kontrollkästchen Freigegeben in der rechten Spalte des Blattes aktiviert ist.
  4.   
  5. Wenn Ihre Anwendungs- oder Testziele projektübergreifende Abhängigkeiten wie CocoaPods enthalten, müssen Sie sicherstellen, dass sie als explizite Abhängigkeiten konfiguriert wurden. Um dies zu tun:      
    • Markieren Sie Ihr Anwendungsziel und klicken Sie auf Bearbeiten ..., um das Schema-Bearbeitungsblatt zu öffnen.
    •   
    • Klicken Sie im linken Bereich des Schema-Editors auf die Registerkarte Erstellen.
    •   
    • Klicken Sie auf die Schaltfläche + und fügen Sie dem Projekt jede Abhängigkeit hinzu. CocoaPods wird als statische Bibliothek namens Pods angezeigt.
    •   
    • Ziehen Sie die Abhängigkeit über Ihr Anwendungsziel, sodass es zuerst erstellt wird.
    •   
  6.   

Sie haben jetzt eine neue Datei im Verzeichnis xcshareddata/xcschemes unter Ihrem Xcode-Projekt .
  Dies ist das gemeinsame Schema, das Sie gerade konfiguriert haben.
  Überprüfen Sie diese Datei in Ihrem Repository und xctool kann Ihre Tests beim nächsten CI-Build finden und ausführen.

     

Für mehr Flexibilität können Sie auch steuern, wie Travis xctool installiert und aufruft:

%Vor%

Diese letzte Konfiguration ähnelt der Vorgehensweise in dieses andere Tutorial :

  

Sobald Sie Ihren Repo verbunden haben, wäre der nächste Schritt das Hinzufügen einer .travis.yml -Datei zum Stamm des Repos.

%Vor%
  
  • Zuerst sage ich Travis, dass dies ein Ziel-C-Projekt ist.
  •   
  • Als nächstes erzähle ich Travis, wie ich CI gegen diesen Repo machen möchte, indem ich ihm Anweisungen gebe, welche Scripts er ausführen soll, um einen Build durchzuführen.
  •   

Ich gebe auch einige zusätzliche Anweisungen darüber, was kurz vor dem Ausführen eines Builds zu tun ist.
Es ist ziemlich üblich, alle Build-Schritte direkt in die Datei .travis.yml einzufügen, aber ich bevorzuge es tatsächlich Erstellen Sie Bash-Skripte in meinem Repo in einem Travis-Verzeichnis in meinem Git Repo und dann beziehen Sie sich nur auf diese Skripte von meinem .travis.yml .
Dies hält die .yml -Datei nett und klein, und auch macht es mir leicht, die Travis-Build-Skripte lokal zu testen .

     

Wir haben Travis einen before_script in der obigen .yml Datei gegeben. Dies soll vom Travis-Agenten zum Herunterladen von Werkzeugen verwendet werden, die als Teil des Builds benötigt werden. So sieht es aus:

%Vor%
  

Sehr einfach. Wir verwenden nur Homebrew, um xctool auf dem Build-Agent zu installieren.
  Alle Travis-Build-Agenten sind mit homebrew vorinstalliert, aber manchmal ist die Formel nicht auf dem neuesten Stand. Daher empfiehlt es sich, ein brew update auszuführen, bevor Sie ein brew install versuchen.
  Das ist alles, was wir tun müssen, um unseren Agenten auf den Build vorzubereiten.

     

Als nächstes schauen wir uns das Build-Skript selbst an:

%Vor%
  

Auch das ist wirklich einfach.
  Wir führen zuerst eine grundlegende Plausibilitätsprüfung durch, indem wir xctool anfordern, um unsere App zu erstellen, indem wir einen Arbeitsbereich und ein Schema angeben .
  Dies überprüft nur, dass wir keine Kompilierungsfehler haben.
  Vorausgesetzt, dass xctool erfolgreich ist, wird das Einheitentestziel für unsere App erstellt und ausgeführt, wobei der Simulator bei Bedarf auf dem Travis-Agenten gestartet wird.

    
VonC 29.10.2013, 07:13
quelle
3

Wenn Sie in der Datei .travis.yml die Sprache Objective-C angeben, verwendet der CI-Server standardmäßig die angepasste Version von osx-cibuild.sh . Dies sucht nach Arbeitsbereichen im aktuellen Verzeichnis und erstellt alle Standardziele.

Da Ihr Repo keine Arbeitsbereiche im root hat (sie befinden sich unter Examples ), kann er nicht herausfinden, was er bauen soll, und so wird nichts gebaut.

Sie können Ihre Projektdatei entweder von Examples in den Stamm verschieben oder angeben, was Sie erstellen möchten, indem Sie XCWORKSPACE in Ihrer Travis CI-Konfiguration festlegen oder ein benutzerdefiniertes Skript zum Ausführen angeben und dann xcodebuild aufrufen dich selber. Das Festlegen der Workspace-Konfiguration ist wahrscheinlich die bevorzugte Option. Passe es nicht an, wenn du es nicht brauchst.

Fügen Sie Ihrem .travis.yml Folgendes hinzu:

%Vor%

(Die Anführungszeichen sind dort, weil der Dateiname einen internen Platz hat.)

Es lohnt sich, das Skript osx-cibuild.sh zu untersuchen, um zu sehen, wie es funktioniert und wie Sie sein Verhalten anpassen können, indem Sie verschiedene Umgebungsvariablen festlegen.

Nützliche Referenzen:

gavinb 29.10.2013 07:43
quelle