Estou tendo um problema semelhante a este: Como copiar arquivos como ação "pós-compilação" do Jenkins se eu não tiver privilégios no diretório de destino
Estou disposto a mover/copiar/rsync arquivos do espaço de trabalho do Jenkins para
/var/www/app
com direitos definidos para
apache:apache
Eu adicionei Jenkins ao grupo apache, mas a instância do jenkins não pode copiar arquivos para /var/www/app.
Eu também tentei definir privilégios de /var/www/app para apache:jenkins, mas ainda assim, Jenkins continua cuspindo o erro: Permissão negada ou Operação não permitida
PS: Esqueci de adicionar o SO é centOS;)
EDIT 1: Este é o log do script jenkins em execução:
[espaço de trabalho] $ /bin/sh -xe /tmp/hudson1379987233097some_more_numbers.sh + sh /path_to_sh_script/script.sh enviando lista de arquivos incrementais
aplicativo/
rsync: falha ao definir permissões em "/var/www/app/application": Operação não permitida (1)
E este é o script em si :)
#!/bin/bash
rsync -avzh /caminho/para/jenkins/jobs/app/workspace/default/application /var/www/app ;
rsync -avzh /caminho/para/jenkins/jobs/app/workspace/default/library /var/www/app ;
rsync -avzh /caminho/para/jenkins/jobs/app/workspace/default/public /var/www/app ;
Responder1
Depois de uma longa e frutífera discussão nos comentários, e seguindoesse linko usuário conseguiu resolver o problema adicionando
--no-perms --omit-dir-times
para as rsync
opções.
Tentativas preliminares para resolver o problema:
Eu acho que se a segurança não for da sua conta por um curto período de tempo, você pode tentar
chmod a+rwx /var/www/app
e tente gravar neste diretório. Observe que se houver subdiretórios você deverá fazer isso recursivamente com:
chmod --recursive a+rwx /var/www/app
Se for bem-sucedido, você poderá começar a remover as permissões gradualmente e isso o ajudará a identificar o problema.
Verifique se o usuário jenkins já é membro do grupo apache com
groups apache
Responder2
Eu tive uma questão semelhante. Eu queria escrever para /var/www no localhost no Jenkins. No meu servidor, /var/www é propriedade de www-data, então adicionei jenkins ao grupo www-data e tornei o grupo /var/www gravável, mas continuei recebendo erro de permissão negada. Simplesmente reiniciar o serviço Jenkins resolveu o problema para mim.
Responder3
Primeiro adicione seu servidor Linux ou Apache ao servidor Jenkin com SSH com ssh-key exchange . E crie um usuário no servidor Linux/Apache com um usuário como jenkin (usuário unix). Porque se você fizer ssh para o arquivo pull/push, o Jenkin usará 'jenkin' como usuário padrão.
Adicionar usuário Apache ao grupo Jenkin no Unix pode ser útil.