Privilégios para Jenkins na pasta do Apache

Privilégios para Jenkins na pasta do Apache

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 rsyncopçõ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.

informação relacionada