Domanda

Sto cercando di configurare un bot Xcode con il server OSX. Dopo aver configurato il repository Git e la creazione di un bot, corro integrare. Non riesce perché il repository viene controllato solo parzialmente. Più precisamente: dei 6 sottomoduli configurati, solo 3 sono inizializzati e controllati.

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
.

(- significa non inizializzato)

Guardando il log bot, sembra semplicemente ignorare i sottomoduli mancanti nel sottomissione inizializzato parte:

...
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'...
...
.

Nessun messaggio di errore qui o altrove. Nessuna menzione singola di E.G. "Kraken" (nome di un sottomodulo mancante) ovunque nei registri.

Durante il check-out manualmente (clone, init init, update sottomodulo), tutti i sottomogeni sono inizializzati.

.gitmodules sembra questo:

$ 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
.

Il repository di base e i 4 repository sottomistici referenziati con l'URL relativo hanno tutte bisogno di autenticazione SSH. L'utente impostato in server OSX ha accesso a tutti loro. Il registro del bot non contiene traccia di tentare di tirare i sottomogeni mancanti.

Posso correggere manualmente il repository locale, ma vorrei di non avere di nuovo lo stesso problema con nuovi progetti e nuovi sottomogodi aggiunti.

GIT versione 1.8.4.2

Sono fuori di idee.

È stato utile?

Soluzione

su Xcode 6.1.1 e OS X Server 4.0, sembra che siano riparati i sottomoduli con problema della testa indipendente, ma ci sono ancora alcuni bug.Uno dei miei progetti ha uno dei suoi sottomoduli completamente ignorati dal server Xcode, quindi l'app non riesce a costruire:

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

La correzione per me è stata aggiungere un trigger di script pre-integrazione come tale:

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

A questo punto le cose stavano costruendo anche se c'erano avvertimenti non fatali sulla cassa non essere puliti o qualcosa del genere.Andarono via quando ho cambiato nella configurazione del bot per avere "pulizia" impostato su "Sempre".

Altri suggerimenti

Nel server Xcode 9, i sottomoduli non vengono inizializzati se nessuno dei file dei sottomogodi è referenziato da uno dei progetti Xcode nell'area di lavoro.

Potrebbe accadere, ad esempio, quando si include un file di intestazione da un sottomodulo che non fa parte del codice e quindi l'hai aggiunta ai "Percorsi di ricerca delle intestazioni" (c / c ++) invece di aggiungerlo al progetto.

Un'eventuale soluzione è aggiungere almeno un file dal sottombodulo al progetto Xcode.Può anche essere un file Readme.md. Questo è più facile che controllare i sottomoduli utilizzando uno script personalizzato perché si affida al server Xcode per memorizzare le credenziali Git.

Sta capisco il suo bug. Ho avuto gli stessi problemi e ho trovato che c'è un problema con i sottomoduli distaccati. Vedi il prossimo articolo che mostra come risolvere questo problema (non aiuta il repository pubblico) http://ikennd.ac/blog/2013/10 / Xcode-Bots-Problemi Comune-and-Workarounds /

Spero che questo ti aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top