2011-10-02 23 views
5

Estoy ejecutando Jenkins 1.433 en Ubuntu 11.04 para realizar una compilación que incluye una tarea Ant. La parte clean de mi tarea de Ant, que elimina el directorio build de construcciones anteriores, funcionará cuando se ejecuta sudo Ant de la terminal, pero fracasa a Jenkins con lo siguiente:Error de Jenkins: "No se puede eliminar el archivo" al invocar Ant

BUILD FAILED 
/var/lib/jenkins/workspace/AomaTests/build.xml:47: Unable to delete directory /var/lib/jenkins/workspace/AomaTests/build 

La Hormiga install referenciado por Jenkins es el que que funciona desde la línea de comandos (usr/bin/ant), y el proyecto Jenkins apunta específicamente a esta instancia (y no a Default). Pensando que esto era un problema de permisos, He intentado lo siguiente:

  • chown -R el directorio apropiado build, estableciendo su propietario para jenkins.
  • Haciendo un chmod 777 en el directorio.
  • Permitiendo temporalmente al usuario jenkins la capacidad de ejecutar cosas sin una contraseña (mediante la edición del archivo sudoers con la línea jenkins ALL = NOPASSWD:ALL).

Ninguno de estos enfoques funcionó. ¿Debo ejecutar hormiga a través de un usuario diferente, o quizás pasarle algunas propiedades a través de Jenkins?

actualización: La salida de ps -ef | grep "jenkins" es:

jenkins 1647  1 0 12:28 ?  00:00:00 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/var/lib/jenkins --output=/var/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid -- /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/run/jenkins/war --httpPort=8080 --ajp13Port=-1 
jenkins 1660 1647 7 12:28 ?  00:00:13 /usr/bin/java -jar /usr/share/jenkins/jenkins.war --webroot=/var/run/jenkins/war --httpPort=8080 --ajp13Port=-1 
mattcarp 2393 2229 0 12:31 pts/0 00:00:00 grep --color=auto jenkins 

Correr ls -l en el directorio que no llega a ser borrado (cuando se ejecuta desde Jenkins) muestra:

drwxr-xr-x 2 jenkins root 4096 2011-10-03 14:49 build 

Muchas gracias por cualquier ¡Consejo!

+0

Muy interesante su configuración. Nuestro espacio de trabajo de Jenkins está en/home/jenkins y no/usr/lib/jenkins. Tampoco veo el nombre del trabajo en la estructura del directorio. En el nuestro, el directorio sería '/ home/jenkins/aromaTest/workspace/build.xml' –

Respuesta

6

Como resultado, todo lo que se requería era propietario para establecer el padre del directorio a jenkins.

¡Guau, ese era un largo camino por recorrer para una respuesta tan simple!

+0

Me alegro de que hayas resuelto el problema. Lo siguiente que le digo que intente es iniciar sesión como Jenkins en su servidor Jenkins, ir al directorio de trabajo e intentar ejecutar Ant desde allí. Esto hubiera eliminado la falla con Jenkins. Ahora, sabiendo que Jenkins no está en la imagen, miraría su entorno y descubriría el problema del directorio. La mejor forma de resolver un problema de compilación es intentarlo ejecutando la compilación en el directorio del espacio de trabajo. Simplemente desactive el trabajo primero. –

+0

¿Qué pasa con Windows? Estoy teniendo el mismo problema en Windows ... Sé que tengo que dar privilegios de administrador para marchitar a jenkins o a la hormiga, pero cómo ... –

0

¿Quién está ejecutando Jenkins? Esa es la pregunta. Hay algún usuario que ejecuta el proceso de Java que ejecuta el servidor de Jenkins. Necesitas encontrar ese usuario. Intenta esto:

$ ps -ef | grep "jenkins" 

y mira lo que obtienes.

Sabiendo que su nombre es Matt y veo que el archivo que no se puede eliminar se encuentra en el directorio de/home/mattcarp, algo me dice que hay algo chiflado pasando. Mi primera suposición es que Jenkins no está siendo ejecutado por el usuario mattcarp.

  • ¿Cómo se instala Jenkins? ¿Está instalado como su propio usuario en su propio directorio? Por lo general, así es como se hace. Por ejemplo, instale Jenkins en /home/jenkins, y todos los trabajos están en /home/jenkins/jobs, y el espacio de trabajo para un trabajo foo está en /home/jenkins/jobs/foo/workspace. ¿Por qué Jenkins está buscando en su directorio $HOME?
  • ¿Cómo funciona su archivo Ant build.xml? ¿Es difícil codificar el directorio /home/mattcarp/workspace/... en el archivo build.xml? Si es así, debe volver a hacer build.xml para usar su árbol de directorios actual y no codificarlo.
+0

¡Gracias por la respuesta! He editado mi pregunta para reflejar el resultado del comando 'ps'. El Ant 'build.xml' utiliza una ruta relativa al directorio de compilación, y Jenkins se instaló usando' aptitude' según las instrucciones en el sitio de Jenkins. Se sienta en '/ var/lib/jenkins'. Siento que estoy haciendo algo estúpido con los permisos, pero no estoy muy seguro de qué ... –

+0

Además, para evitar cualquier variación, moví manualmente los archivos del proyecto a '/ var/lib/jenkins/workspace' (esto se refleja en mi edición de la pregunta). Por cierto, la salida de 'ps -f | grep "ant" 'es: ' mattcarp 2775 2231 0 15:41 pts/0 00:00:00 grep --color = auto hormiga' –

Cuestiones relacionadas