2010-09-13 10 views
11

Estoy tratando de buscar un repositorio git de solo lectura desde github y hacerlo construir a través de hudson. Este proceso está fallando.¿Por qué git fetch via hudson fail, mientras que git fetch a través de la línea de comandos funciona?

Ésta es la salida de 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) 

Cuando corro que recuperan comando directamente a través de la línea de comandos git bash, no consigo ninguna respuesta (que supongo significa que ha funcionado).

Miré a esta posible solución: http://issues.hudson-ci.org/browse/HUDSON-7141?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

Pero el uso de esa versión del plugin de no cambiar este comportamiento.

Ni siquiera he conseguido que funcione con cmake, simplemente lo descargué constantemente. ¿Cómo puedo hacer que esto funcione?

editar: Este problema no es una reproducción de Problem cloning/fetching repository using Git plugin for Hudson on Windows, porque no estoy funcionando como un servicio en un servidor.

Respuesta

8

Sí, acabo de solucionar este problema exacto. Si abre un explorador de Windows al d:\hudson\home\jobs\gdcm-hudson\workspace, debería poder ver un directorio .git y nada más. Debería haber una copia de trabajo pero no la hay. Para solucionar este problema hay que "preparar" el repositorio ejecutando

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

Esto debería crear un montón de otros archivos en el d:\hudson\home\jobs\gdcm-hudson\workspace lo largo de lado el directorio .git y usted debería ser capaz de realizar una compilación de Hudson.

+1

Voto máximo porque esto funcionó para mí. –

+0

kelloti ¿Quiere decir que tengo que clonar mi repositorio en el espacio de trabajo? – Wearybands

+0

Ha pasado un tiempo desde que hice esto, pero si no se clona, ​​probablemente necesites clonarlo, así que sí. En la respuesta que di, solo tuve que sacar una vez para comenzar. Es posible que tengas un problema completamente diferente. – kelloti

2

El plugin de Git para Hudson falla solo recientemente en este tipo de mensaje de error (issue 6902, July 2010). Antes solía continuar en silencio (lo cual era engañoso).

¿Tiene algún submódulo definido?
Porque parece Git Plugin Bug 4

tengo la siguiente configuración:

  • una rama llamada "maestro", que contiene un sub-módulo a otro proyecto
  • una rama llamada "desarrollo", que no contiene una referencia de submódulo

Si configuro un trabajo Hudson para construir/probar la rama "desarrollar", la compilación se rompe, porque puede no hacer el pago del submódulo. Debido a que esto sucede antes de cambiar a la rama de "desarrollo", la construcción se rompe antes de que algo comenzara.

Solución

que asumen la salida de git ls-tree HEAD se analizan en busca de 160000 referencias para determinar qué entradas son submódulos.
La ref HEAD en ese punto aún apunta a master, supongo que en la mayoría de los casos.
En lugar de ls-tree 'ing HEAD, ¿quizás lo haga en la rama especificada?

5

Esto se me ocurrió en una compilación que funcionaba previamente bien. La solución fue simplemente eliminar el directorio del área de trabajo y reiniciar la compilación.

0

Después de eliminar el directorio de espacio de trabajo de Hudson .hudson, funciona para mí. Estoy usando Hudson 2.2.1 y git plugin 2.2.1.

+0

2.2.1? El último plugin git para Jenkins es afaics 1.1.26 – Hardy

0

Para el registro, en mi caso el problema era que había un ejecutable especial de Git configurado (en la configuración global de Hudson). Este ejecutable no se ejecutó en algunos de mis hosts de compilación debido a la falta de bibliotecas. Cuando usaste/usr/bin/git en cambio funcionó.

Parece que el mensaje de error descrito realmente puede indicar cualquier error de Git en absoluto.

Cuestiones relacionadas