Frage

Ich versuche, einen Xcode-Bot mit OSX Server einzurichten.Nachdem ich das Git-Repository konfiguriert und einen Bot erstellt habe, starte ich integrate.Es schlägt fehl, weil das Repository nur teilweise ausgecheckt ist.Genauer gesagt:Von den 6 konfigurierten Submodulen werden nur 3 initialisiert und ausgecheckt.

didi@mac:/Library/Server/Xcode/Data/BotRuns/Cache/c5fda8f4-4d25-4d25-c18a-eb0b16a06692/source$ git submodule status
+c6e8420aec4147641fb1ca12d9f1d31bdd804e77 libs/asi-http-request (v1.7-320-gc6e8420)
-ae64a38766b42f236bb94f0e661cddb829f9ac43 libs/kraken
-7da02b323636bbaa0bbbf5b4eb229fcc07b1e14a libs/route-me
 152f9ee5576e710705a49032253d7d5af5366f9c libs/routing (152f9ee)
 347aaf74fe0c6388785095efdbf6397851514b7f libs/rtlabel (1.0-32-g347aaf7)
-562cf6b1c879f03546f5184e012cea15c4f159db libs/skmaps

(- bedeutet nicht initialisiert)

Wenn man sich das Bot-Protokoll ansieht, scheint es die fehlenden Submodule im Submodul-Initialisierungsteil einfach zu ignorieren:

...
Checking connectivity... done
Submodule 'libs/asi-http-request' (https://github.com/BikeCityGuide/asi-http-request.git) registered for path 'libs/asi-http-request'
Submodule 'libs/routing' (ssh://mac_ci@rooty.bikecityguide.org/var/repos/librouting.git) registered for path 'libs/routing'
Submodule 'libs/rtlabel' (https://github.com/BikeCityGuide/RTLabel.git) registered for path 'libs/rtlabel'
Cloning into 'libs/asi-http-request'...
...

Keine Fehlermeldung hier oder anderswo.Keine einzige Erwähnung von z.B."kraken" (Name eines fehlenden Submoduls) irgendwo in den Protokollen.

Beim manuellen Auschecken (Klonen, Submodul-Init, Submodul-Update) werden alle Submodule initialisiert.

.gitmodules sieht so aus:

$ cat .gitmodules 
[submodule "libs/asi-http-request"]
    path = libs/asi-http-request
    url = https://github.com/BikeCityGuide/asi-http-request.git
[submodule "libs/rtlabel"]
    path = libs/rtlabel
    url = https://github.com/BikeCityGuide/RTLabel.git
[submodule "libs/routing"]
    path = libs/routing
    url = ../librouting.git
[submodule "libs/kraken"]
    path = libs/kraken
    url = ../kraken_ios.git
[submodule "libs/route-me"]
    path = libs/route-me
    url = ../route-me.git
[submodule "libs/skmaps"]
    path = libs/skmaps
    url = ../skmaps.git

Das Basis-Repository und die 4 Submodul-Repositorys, auf die mit relativer URL verwiesen wird, benötigen alle eine SSH-Authentifizierung.Der in OSX Server eingerichtete Benutzer hat Zugriff auf alle.Das Protokoll des Bots enthält keine Spur von dem Versuch, die fehlenden Submodule abzurufen.

Ich kann das lokale Repository manuell reparieren, möchte aber, dass das gleiche Problem nicht noch einmal auftritt, wenn neue Projekte und neue Submodule hinzugefügt werden.

git-Version 1.8.4.2

Mir gehen die Ideen aus.

War es hilfreich?

Lösung

Bei Xcode 6.1.1 und OS X Server 4.0 sieht es aus, als würden sie die Submodule mit freistehender Kopfproblem behoben, aber es gibt immer noch einige Fehler.Eines meiner Projekts hat, dass ein seine Submodule vollständig von Xcode-Server ignoriert wird, sodass die App nicht erstellt wird:

generasacodicetagpre.

Der Fix für mich war, als solche einen Vorintegrationsskriptabzug hinzuzufügen:

generasacodicetagpre.

An diesem Punkt bauten die Dinge, obwohl es nicht tödliche Warnungen über die Kasse gab, nicht sauber oder so etwas.Sie gingen weg, als ich in die Konfiguration des Bots änderte, um "Reinigung" auf "immer einstellen".

Andere Tipps

In Xcode 9 Server werden Submodule nicht initialisiert, wenn keine der Dateien der Submodule von einem der Xcode-Projekte im Arbeitsbereich referenziert wird.

Dies kann beispielsweise passieren, wenn Sie eine Header-Datei aus einem Submodul einbinden, die nicht Teil Ihres Codes ist, und Sie sie daher zu den "Header-Suchpfaden" (c / c ++) hinzugefügt haben, anstatt sie dem Projekt hinzuzufügen.

Eine mögliche Problemumgehung besteht darin, dem Xcode-Projekt mindestens eine Datei aus dem Submodul hinzuzufügen.Es kann sogar ein sein Readme.md Datei.Dies ist einfacher als das Auschecken von Submodulen mit einem benutzerdefinierten Skript, da es auf dem Xcode-Server basiert, um Ihre GIT-Anmeldeinformationen zu speichern.

verstehe ich einen Fehler. Ich hatte die gleichen Probleme und stellte fest, dass es ein Problem mit freistehenden Submodulen gibt. Siehe den nächsten Artikel, der zeigt, wie Sie dieses Problem beheben können (hilft nicht im öffentlichen Repository) http://ikennd.ac/blog/2013/10 / Xcode-Bots-Common-Probleme-and-Workarounds /

hoffe das hilft dir.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top