2010-04-06 14 views
10

Tengo un script de shell en la misma máquina que Hudson se implementa en la ejecución y sobre ella, llamadas wget en una URL Hudson acumulación gatillo. Dado que es la misma máquina, tengo acceso a ella como http://localhost:8080/hudson/job/jobname/build?token=sometokenHudson gatillo construye de forma remota da un error 403 prohibido

Normalmente, esto se supone que desencadena una construcción en el proyecto. Pero me sale un 403 prohibido cuando hago esto. ¿Alguien tiene alguna idea de por qué? Lo he intentado usando un navegador y desencadena la compilación, pero a través de la línea de comandos no parece funcionar. ¿Algunas ideas?

+0

Se debe esto a Hudson requiere sesiones autenticadas para activar a distancia se basa? –

+0

Mi webapp hudson está protegida. Supongo que es un problema de seguridad. –

Respuesta

9

lo he descubierto. Aparentemente, si Hudson está protegido mediante un mecanismo de seguridad, debe autenticar las solicitudes de compilación. Vea este enlace de la wiki para más detalles http://wiki.hudson-ci.org/display/HUDSON/Authenticating+scripted+clients

Como utilicé el mecanismo de autenticación que se envió con Hudson, llamando a los scripts de compilación invovled. Solía ​​

wget --auth-no-challenge --http-user=user --http-password=password http://hudson.yourcompany.com/job/your_job/build?token=TOKEN 

para ejecutar el script de construcción.

+2

Hmm, pensé que para eso era el token, para evitar tener que poner contraseñas en las secuencias de comandos. :( – Kief

+0

Esto es sólo cuando Hudson en sí está habilitada la seguridad. Si su dentro del firewall, ya no tienes que activar la seguridad de Hudson y se puede ejecutar este disparador sin la contraseña. –

+1

también pensé que todo el propósito de este paso de testigo es saltarse la autenticación . Pero solo funciona, si concede _leer_ acceso al usuario anónimo ... – pihentagy

0

Si utiliza la seguridad basada en la matriz, puede establecer de empleo Lea y Trabajo permiso de construcción a Anonymous, por lo que no es necesario un usuario y contraseña en su gancho post-commit.

Otro consejo es para encender el sondeo sin fijar una fecha y utilizar esta URL:?

http://hudson.yourcompany.com/job/your_job/de votación token = TOKEN

Su trabajo será construir solo si hubo cambios SVN (sin necesidad construir al cambiar otros proyectos, la creación de etiquetas, etc.)

+3

Nooo, agregar permiso de lectura a Anonymous no es una buena idea en mi humilde opinión. – pihentagy

0

tengo los mismos errores. En mi caso, tuve que agregar el encabezado Jenkins-Crumb al objeto HttpPost para que funcione.

post.addHeader("Jenkins-Crumb","crumb value"); 

para encontrar el valor de la miga para la instancia Jenkins, instalar Firebug o cualquier complemento n su navegador que le ayudará a ver los encabezados de la solicitud. Vaya a la página de su trabajo al http://server_name:port/jenkins/job/job_name Presione F12 para activar Firebug, llegó a la pestaña Red. Haga clic en Activar auto - actualizar enlace en la parte superior derecha de su página. Ahora, cada 5 segundos, debería ver una solicitud de Ajax para buscar el buildHistory. En esa solicitud, examine los encabezados. Debe haber un encabezado para Jenkins-Crumb, también puede estar bajo el nombre .crumb dependiendo de la versión de Jenkins que esté usando. Lo tienes en tu código de Java.

Cuestiones relacionadas