2014-01-09 13 views
5

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.Xcode Bot: Git Submodule nicht initialisiert

[email protected]:/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)

am Bot log Blick scheint es nur die fehlenden Submodule im Submodul zu ignorieren initialisieren Teil:

... 
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://[email protected]/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 irgendwo sonst. 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 wie folgt 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 Repository Basis und die 4-Modul-Repositories mit relativen URL referenziert alle SSH-Authentifizierung benötigen. Der Benutzer, der auf dem OSX-Server eingerichtet wurde, hat Zugriff auf alle Benutzer. Das Protokoll des Bot enthält keine Spur von versuchen, die fehlenden Submodule zu ziehen.

Ich kann das lokale Repository manuell reparieren, aber ich möchte das gleiche Problem nicht erneut mit neuen Projekten und neuen Submodulen hinzugefügt haben.

git Version 1.8.4.2

ich aus Ideen bin.

+0

> "Das Protokoll des Bot enthält keine Spur von versuchen, die fehlenden Submodule zu ziehen." Gibt es eine Fehlermeldung in diesen Protokollen? – VonC

+0

Die einzige Fehlermeldung ist die für den fehlgeschlagenen Build wegen fehlender Quelldateien. –

+0

Und ich nehme an, ein 'git submodule update --init --recursive' funktioniert manuell? – VonC

Antwort

11

Auf Xcode 6.1.1 und OS X Server 4.0 sieht es so aus, als hätten sie die Submodule mit einem abgekoppelten HEAD Problem behoben, aber es gibt immer noch einige Fehler. Einer meiner Projekt hat man seine Submodule vollständig von Xcode Server ignoriert wird, so schlägt die App zu bauen: für mich

$ git submodule 
8a88bc41c9dc0f57c921d82bc4e7b93e1c4cbf7a InAppStore (heads/master) 
e4203f9f61d2546868c1274da5c7a0c56b87a737 Libraries (heads/master) <--- IGNORED 
01902f255e6c3d90f0db41cb62dd2934098b98dd MixpanelTracker (heads/master) 
e2bee59accd817d50dff881a42c9e9afe307226f XLFacility (1.4.1-5-ge2bee59) 

Das Update war ein Vorintegration Script-Trigger als solche hinzuzufügen:

cd "$XCS_SOURCE_DIR/{YOUR_APP_REPO_NAME_WITHOUT_DOT_GIT_SUFFIX}" 
git submodule update --init --recursive 

An diesem Punkt wurden Dinge aufgebaut, obwohl es nicht-fatale Warnungen gab, dass die Kasse nicht sauber war oder so ähnlich. Sie gingen weg, als ich zur Konfiguration des Bots wechselte, um "Reinigung" auf "Immer" zu setzen.

+1

Mein Problem war, dass das Submodul nicht auf den richtigen Commit aktualisiert wurde. Diese Lösung hat es perfekt behoben. Ich verstehe nicht, warum Apple Submodule nicht richtig funktionieren lassen kann, aber zumindest geben uns die Skripts einen Workaround. – phatmann

0

Ist das ein Fehler? Ich hatte die gleichen Probleme und festgestellt, dass es ein Problem mit abgelösten Submodule gibt. den nächsten Artikel anzeigen, die zeigen, wie dieses Problem zu beheben (hilft nicht auf öffentlichen Repository) http://ikennd.ac/blog/2013/10/xcode-bots-common-problems-and-workarounds/

Hope this Ihnen hilft.

+0

Die gelöschten HEAD-Probleme sind ab Xcode 6 behoben.Eine Lösung für aktuelle Probleme finden Sie unter Pols Antwort unten. – phatmann

Verwandte Themen