Jenkins - Publicação sobre SSH - UNSTABLE - Permissão negada

1

Nosso processo de implantação do jenkins verifica nosso repositório git no espaço de trabalho e, em seguida, copia os arquivos do espaço de trabalho para o nosso ambiente de preparação, usando o plug-in publicar em SSH.

2 dias atrás, tivemos uma confirmação e implementação automática às 10h34 e às 14h13. O commit AM implementado bem, desde o commit do PM, o job de publicação relata isso:

BUILD SUCCESSFUL
Total time: 15 seconds
SSH: Connecting from host [...]
SSH: Connecting with configuration [...] ...
SSH: Disconnecting configuration [...] ...
ERROR: Exception when publishing, exception message [Permission denied]
Build step 'Send files or execute commands over SSH' changed build result to UNSTABLE

O próprio commit foi um commit secundário, contendo arquivos css e javascript para o frontend. Nada espetacular.

Todo o ambiente de preparo foi recursivamente configurado para chmod 777 e chown'd para o usuário e grupo que é usado pela configuração deploy sobre ssh (temporariamente, para garantir que não tenhamos problemas de permissão de arquivo)

Ainda a tarefa relata permissão negada.

A configuração da tarefa implantar em ssh não mudou nos últimos 2 meses. Mesmas chaves, mesmo usuário, mesmas senhas, etc.

Infelizmente, a mensagem de erro não contém detalhes úteis.

Outra tarefa que implanta um projeto diferente no mesmo servidor da web somente em uma webroot diferente funciona bem.

O servidor está executando o FreeBSD e está estacionado em um hoster.

Antes de entrarmos em contato, queremos ter certeza de que verificamos tudo ao nosso lado.

    
por Worp 02.09.2015 / 16:20

1 resposta

1

O problema é que nosso trabalho em Jenkins não limpa seu espaço de trabalho. Ever.
Houve uma pasta no espaço de trabalho que estava originalmente no git, mas foi retirada e reside fora da raiz da web. Mas, como ele não é limpo, os artefatos dessa pasta ainda permanecem no espaço de trabalho.

Agora alguém fez uma alteração nessa pasta no teste (diretamente via SSH) e esqueceu de definir as permissões corretamente. Então, quando o trabalho "publicar sobre o ssh" apareceu, ele tentou copiar os artefatos antigos, mas não tinha permissões.

Como a pasta reside fora da webroot, que nós definimos como 777 para testes, não conseguimos visualizá-la.

O trabalho do Jenkins foi alterado para limpar o espaço de trabalho após cada trabalho e as permissões foram definidas corretamente. A implantação agora está funcionando novamente.

@Others: Por favor, lembre-se do comentário à pergunta original por Iony . É muito útil chegar ao fundo das coisas.

Além disso, na guia avançada da publicação sobre o trabalho ssh, você pode selecionar "saída detalhada". Isso permitirá que a saída do console do trabalho em execução seja detalhada. Veja Publique em excesso - Plugins Wiki em jenkins-ci.org

    
por 03.09.2015 / 09:41