2012-06-20 12 views
32

Acaba de instalar Jenkins en Ubuntu 12.04 y quería crear una compilación simple que solo clone un proyecto y lo construya.Jenkins + git: error "dime quién eres", ¿por qué necesita etiquetar?

No funciona porque no puede etiquetar. No puede etiquetar porque se equivoca diciendo "dime quién eres" al parecer porque no configuré git UserName y UserEmail.

Pero, no debería necesitar configurar eso, Jenkins solo va a clonar el repositorio, ¿por qué necesita las credenciales si no va a impulsar los cambios, por qué necesita una etiqueta?

registro de errores completa es:

Started by user anonymous 
Checkout:workspace//var/lib/jenkins/jobs/Foo.Bar.Baz/workspace - [email protected] 
Using strategy: Default 
Cloning the remote Git repository 
Cloning repository origin 
Fetching upstream changes from [email protected]:foo-bar-baz/foo-bar-baz.git 
Seen branch in repository origin/1.0 
Seen branch in repository origin/1.5.4 
Seen branch in repository origin/HEAD 
Seen branch in repository origin/master 
Commencing build of Revision 479d37776b46283a946dd395c1ea78f18c0b97c7 (origin/1.0) 
Checking out Revision 479d37776b46283a946dd395c1ea78f18c0b97c7 (origin/1.0) 
FATAL: Could not apply tag jenkins-Foo.Bar.Baz-2 
hudson.plugins.git.GitException: Could not apply tag jenkins-Foo.Bar.Baz-2 
at hudson.plugins.git.GitAPI.tag(GitAPI.java:737) 
at hudson.plugins.git.GitSCM$4.invoke(GitSCM.java:1320) 
at hudson.plugins.git.GitSCM$4.invoke(GitSCM.java:1268) 
at hudson.FilePath.act(FilePath.java:758) 
at hudson.FilePath.act(FilePath.java:740) 
at hudson.plugins.git.GitSCM.checkout(GitSCM.java:1268) 
at hudson.model.AbstractProject.checkout(AbstractProject.java:1193) 
at hudson.model.AbstractBuild$AbstractRunner.checkout(AbstractBuild.java:565) 
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:453) 
at hudson.model.Run.run(Run.java:1376) 
at hudson.matrix.MatrixBuild.run(MatrixBuild.java:220) 
at hudson.model.ResourceController.execute(ResourceController.java:88) 
at hudson.model.Executor.run(Executor.java:175) 
at hudson.model.OneOffExecutor.run(OneOffExecutor.java:66) 
Caused by: hudson.plugins.git.GitException: Command "git tag -a -f -m Jenkins Build #2 jenkins-Foo.Bar.Baz-2" returned status code 128: 
stdout: 
stderr: 
*** Please tell me who you are. 

    Run 

    git config --global user.email "[email protected]" 
    git config --global user.name "Your Name" 

to set your account's default identity. 
Omit --global to set the identity only in this repository. 

fatal: empty ident <[email protected](none)> not allowed 

    at hudson.plugins.git.GitAPI.launchCommandIn(GitAPI.java:786) 
    at hudson.plugins.git.GitAPI.launchCommand(GitAPI.java:748) 
    at hudson.plugins.git.GitAPI.launchCommand(GitAPI.java:758) 
    at hudson.plugins.git.GitAPI.tag(GitAPI.java:735) 
    ... 13 more 
+0

¡Eh! Después de configurar usuario.nombre y usuario.correo electrónico, la compilación tuvo éxito pero ha creado una nueva etiqueta en el servidor llamada "1.0", ¿por qué el plugin git es tan raro en la configuración predeterminada y cómo configurarlo para que no lo haga? – knocte

Respuesta

37

La idea de etiquetado cuando se tira/clonación de un acuerdo de recompra es común a la mayoría Construir Programador por ahí:
Hudson-Jenkins, sino también CruiseControl (La etiqueta acumulación determine el labelincrementer) o RTC Jazz Build Engine (where they are called "snapshots").

La idea es establecer un registro persistente de la entrada en una compilación.
De esta forma, el código que está extrayendo, incluso si no fue etiquetado, es etiquetado automáticamente por el planificador de compilación, para poder volver a esa compilación específica más adelante.

Si esa política (siempre etiquetar antes de la acumulación) se establece, entonces Jenkins tendrá que saber quién es usted con el fin de hacer un git tag (que es un objeto de git con un autor que se le atribuye: user.name y user.email) .

Sin embargo, como se menciona en "Why hudson/jenkins tries to make commit? ":

cheques" Skip internal tag" config bajo "Advanced..." en la sección "Source code management".

Eso debería evitar ese paso de etiquetado adicional que parece no necesitar.

enter image description here

+2

finalmente! muchas gracias VonC :) – knocte

+0

@knocte sí ... Fui un poco lento en eso;) – VonC

+0

Pensé que la captura de pantalla parecía familiar :) – fijiaaron

0

También puede SSH en Jenkins y navegar hacia el directorio de espacio de trabajo, y entonces sólo se puede ejecutar las user.name git config y comandos user.email normalmente.

+0

No puedo SSH en Jenkins debido a las restricciones de nuestro alojamiento del servidor. –

+0

Puedo SSH, y git trabajo en línea de comandos, pero no en Jenkins. La solución de @iecanfly parece funcionar para mí. –

17

cuanto a cómo establecer user.email y user.name, en Jenkins, vaya a "Administrar Jenkins"> "Configuración del sistema" y vaya a "plug-in Git" y allí encontrará Git plugin screen shot

ingrese su correo electrónico y su nombre, está listo para comenzar.

+2

Tengo ese conjunto, pero no parece ser usado. –

+0

Una opción alternativa si tiene acceso limitado al administrador de Jenkins sería Agregar "Comportamiento adicional" en la sección del complemento Git de la configuración del trabajo. Puede seleccionar el comportamiento adicional para agregar un nombre de usuario/dirección de correo electrónico personalizado que solo se aplicará a su trabajo y no a una configuración global. – bobbypavan

1

He utilizado la solución anterior por iecanfly. Usando mi nombre de usuario git y el trabajo aún no ha contraseña, yo entré

nombre de usuario: Jenkins

correo electrónico: Jenkins @ localhost

Eso ha solucionado el problema.

Cuestiones relacionadas