2010-09-13 7 views
11

Sto cercando di recuperare un repository git di sola lettura da github e farlo compilare tramite hudson. Questo processo sta fallendo.Perché git fetch tramite hudson fallisce, mentre git fetch tramite la riga di comando funziona?

Questa è l'uscita Hudson:

Started by an SCM change 
Checkout:workspace/d:\hudson\home\jobs\gdcm-hudson\workspace - [email protected] 
Using strategy: Default 
Checkout:workspace/d:\hudson\home\jobs\gdcm-hudson\workspace - [email protected] 
GitAPI created 
Fetching changes from the remote Git repository 
Fetching upstream changes from git://github.com/malaterre/gdcm.git 
[workspace] $ "C:\Program Files (x86)\Git\bin\git.exe" fetch -t git://github.com/malaterre/gdcm.git +refs/heads/*:refs/remotes/origin/* 
[workspace] $ "C:\Program Files (x86)\Git\bin\git.exe" ls-tree HEAD 
ERROR: Problem fetching from origin/origin - could be unavailable. Continuing anyway 
ERROR: Could not fetch from any repository 
FATAL: Could not fetch from any repository 
hudson.plugins.git.GitException: Could not fetch from any repository 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:674) 
    at hudson.plugins.git.GitSCM$2.invoke(GitSCM.java:641) 
    at hudson.FilePath.act(FilePath.java:753) 
    at hudson.FilePath.act(FilePath.java:735) 
    at hudson.plugins.git.GitSCM.checkout(GitSCM.java:641) 
    at hudson.model.AbstractProject.checkout(AbstractProject.java:1061) 
    at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:479) 
    at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:411) 
    at hudson.model.Run.run(Run.java:1273) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) 
    at hudson.model.ResourceController.execute(ResourceController.java:88) 
    at hudson.model.Executor.run(Executor.java:129) 

Quando funziono che comando fetch direttamente tramite la linea di comando git bash, ottengo nessuna risposta (che presumo significa ha funzionato).

Ho guardato questo possibile soluzione: http://issues.hudson-ci.org/browse/HUDSON-7141?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

Ma usando la versione del plugin non modificare questo comportamento.

Non ho ancora avuto modo di farlo funzionare ancora con cmake, appena scaricato in modo coerente. Come posso farlo funzionare?

modifica: Questo problema non è una copia di Problem cloning/fetching repository using Git plugin for Hudson on Windows, perché non sto eseguendo come servizio su un server.

risposta

8

Sì, ho appena risolto questo problema esatto. Se apri Windows explorer su d:\hudson\home\jobs\gdcm-hudson\workspace dovresti riuscire a vedere una directory .git e nient'altro. Ci dovrebbe essere una copia di lavoro, ma non c'è. Per risolvere questo problema è necessario "prime" del repository eseguendo

git pull git://github.com/malaterre/gdcm.git 

Questo dovrebbe creare un gruppo di altri file in d:\hudson\home\jobs\gdcm-hudson\workspace lungo il lato della directory .git e si dovrebbe essere in grado di eseguire una generazione a Hudson.

+1

In aumento perché questo ha funzionato per me. –

+0

kelloti Vuoi dire che devo clonare il mio repository nello spazio di lavoro? – Wearybands

+0

È passato un po 'di tempo da quando l'ho fatto, ma se non è clonato probabilmente è necessario clonarlo, quindi sì. Nella risposta che ho dato, ho dovuto tirare una volta per farlo iniziare. È possibile che tu abbia un problema completamente diverso. – kelloti

2

Il plugin Git per Hudson non riesce solo recentemente su questo tipo di messaggio di errore (issue 6902, July 2010). Prima era solito andare in silenzio (che era fuorviante).

Avete definito dei sottomoduli?
Perché sembra Git Plugin Bug 4

Ho la seguente configurazione:

  • un ramo chiamato "master", che contiene un modulo a un altro progetto
  • un ramo chiamato "sviluppo", che non contiene un riferimento al sottomodulo

Se configuro un lavoro Hudson per creare/testare il ramo "sviluppo", il build si interrompe, perché può non fare il checkout del sottomodulo. Perché ciò accade prima di passare al ramo "sviluppo", la compilazione viene interrotta prima di iniziare qualsiasi cosa.

Soluzione

assumo la produzione di git ls-tree HEAD è scansionata per 160000 riferimenti per determinare quali voci sono sottomoduli.
Il riferimento HEAD a quel punto punta ancora a master, suppongo nella maggior parte dei casi.
Invece di ls-tree 'HEAD, forse farlo sul ramo specificato?

5

Mi è venuto in mente un edificio che in precedenza funzionava correttamente. La soluzione era solo per cancellare la directory dello spazio di lavoro e riavviare la build.

0

Dopo aver eliminato la directory dello spazio di lavoro Hudson .hudson, funziona per me. Sto usando Hudson 2.2.1 e lo git plugin 2.2.1.

+0

2.2.1? L'ultimo plugin git per Jenkins è afaics 1.1.26 – Hardy

0

Per la cronaca, nel mio caso il problema era che c'era uno speciale eseguibile Git configurato (nelle impostazioni globali di Hudson). Questo eseguibile non è stato eseguito su alcuni dei miei host di compilazione a causa di librerie mancanti. Quando si usa/usr/bin/git invece ha funzionato.

Quindi sembra che il messaggio di errore descritto possa realmente indicare qualsiasi errore di Git.