Pergunta

O problema

Estou tentando construir meu aplicativo no Jenkins, e ele está em um repositório privado no Github, também há um submódulo privado.

Posso clonar o repositório privado no Jenkins configurando suas credenciais, mas o Jenkins não pode clonar o submódulo. Aqui está a saída de uma compilação com falha:

Started by an SCM change
Building in workspace /var/lib/jenkins/jobs/Project/workspace
Fetching changes from the remote Git repository
Fetching upstream changes from git@github.com:user/repogit
using GIT_SSH to set credentials 
Checking out Revision 9cc99b67cc676d0ea8ccd489a8327f5c6dbb8d7f (origin/branch)
[workspace] $ /bin/sh -xe /tmp/hudson2710403018107019432.sh
+ git submodule update --init --recursive
Initialized empty Git repository in /var/lib/jenkins/jobs/repository/submodule/.git/
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly
Clone of 'git@github.com:user/submodule.git' into submodule path 'repository/submodule/' failed
Build step 'Execute shell' marked build as failure
Discard old builds...
#156 is removed because status FAILURE is not to be kept
Publishing Clover coverage report...
No Clover report will be published due to a Build Failure
Sending e-mails to: 
Finished: FAILURE

Aqui está o que tentei fazer no Jenkins

  • Tentei definir o comportamento adicional "Comportamento avançado do submódulo", sem sucesso.
  • Tentei configurar uma nova etapa antes de executar os testes com o phpunit:

git submodule update --init --recursive

  • Tentei definir um repositório git no projeto do meu submódulo também, não apenas no repositório principal que está sendo testado, sem sorte também.

Todos eles causam o erro que diz que Jenkins não consegue encontrar o repositório do submódulo.

Alguma idéia de como posso resolver isso?

(O nome de usuário, caminhos e repositórios estão corretos, acabei de alterá-los para postar aqui)

Foi útil?

Solução

Resolvido.Na minha credencial eu estava usando uma chave SSH direta (opção "Enter diretamente"), em vez de colocar em um arquivo.

Acabei de colocar as chaves (públicas e privadas) em ~/.ssh e alterei minhas credenciais para a opção "Do mestre Jenkins ~/.ssh".

O problema era que o submódulo não estava usando a credencial que especifiquei para o repositório principal, ele estava tentando usar a chave ssh padrão (.ssh/id_rsa).

Outra solução é passar -i my_key para a etapa do submódulo git (só será necessário se sua chave não estiver no caminho padrão (~/.ssh/id_rsa) )

Também não esqueça de dar as permissões corretas às suas chaves, no meu caso eu tive que:

chown apache ~/.ssh/id_rsa*
chmod 700 ~/.ssh/id_rsa*
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top