Tengo un problema similar a este: Cómo copiar archivos como acción "posterior a la compilación" de Jenkins si no tengo privilegios para el directorio de destino
Estoy dispuesto a mover/copiar/rsync archivos desde el espacio de trabajo de jenkins a
/var/www/aplicación
con derechos fijados en
apache:apache
Agregué jenkins al grupo apache, pero la instancia de jenkins no puede copiar archivos a /var/www/app.
También intenté configurar los privilegios de /var/www/app en apache:jenkins pero aún así, Jenkins sigue arrojando el error: Permiso denegado u Operación no permitida.
PD: Olvidé agregar el sistema operativo centOS;)
EDITAR 1: Este es el registro de la ejecución del script jenkins:
[espacio de trabajo] $ /bin/sh -xe /tmp/hudson1379987233097some_more_numbers.sh + sh /path_to_sh_script/script.sh enviando lista de archivos incrementales
solicitud/
rsync: no se pudieron establecer permisos en "/var/www/app/application": operación no permitida (1)
Y este es el guión en sí :)
#!/bin/bash
rsync -avzh /ruta/a/jenkins/jobs/app/workspace/default/application /var/www/app;
rsync -avzh /ruta/a/jenkins/jobs/app/workspace/default/library /var/www/app;
rsync -avzh /ruta/a/jenkins/jobs/app/workspace/default/public /var/www/app;
Respuesta1
Después de una larga y fructífera discusión en los comentarios, y siguiendoeste enlaceel usuario logró solucionar el problema añadiendo
--no-perms --omit-dir-times
a las rsync
opciones.
Intentos preliminares de resolver el problema:
Supongo que si la seguridad no te preocupa durante un breve periodo de tiempo, puedes intentarlo.
chmod a+rwx /var/www/app
y luego intente escribir en este directorio. Ten en cuenta que si hay subdirectorios debes hacerlo de forma recursiva con:
chmod --recursive a+rwx /var/www/app
Si tiene éxito, puede comenzar a eliminar permisos gradualmente y esto le ayudará a identificar el problema.
Verifique que el usuario jenkins ya sea miembro del grupo apache con
groups apache
Respuesta2
Tuve un problema similar. Quería escribir en /var/www en localhost en Jenkins. En mi servidor, /var/www es propiedad de www-data, así que agregué jenkins al grupo www-data e hice que el grupo /var/www pudiera escribirse, pero seguía recibiendo un error de permiso denegado. Simplemente reiniciar el servicio jenkins solucionó el problema.
Respuesta3
Primero agregue su servidor Linux o Apache al servidor Jenkin con SSH con intercambio de claves ssh. Y cree un usuario en el servidor Linux/Apache con un usuario como jenkin (usuario de Unix). Porque si haces ssh para extraer/enviar archivos, jenkin usa 'jenkin' como usuario estándar.
Puede resultar útil agregar un usuario de Apache al grupo jenkin en Unix.