Como especificar uma chave SSH para o Hudson com o plugin git?

7

Eu tenho Hudson (sistema de integração contínua) com o plugin git em execução em um serviço do Windows Tomcat. O msysgit está instalado e o diretório bin msysgit está no caminho. PuTTY / Pageant / plink são instalados e o msysgit está configurado para usá-los.

O problema para o qual estou correndo, eu acho, é que o usuário que possui o serviço Tomcat / Hudson (Sistema Local) não tem nenhuma chave SSH configurada para poder clonar o repositório git. Quando o plugin git Hudson tenta clonar, aparece o erro:

$ git clone -o origin git@hostname:project.git "e:\HUDSON_HOME\jobs\Project Trunk\workspace"
ERROR: Error cloning remote repo 'origin' : Could not clone git@hostname:project.git
ERROR: Cause: Error performing git clone -o origin git@hostname:project.git e:\HUDSON_HOME\jobs\Project Trunk\workspace
Trying next repository
ERROR: Could not clone from a repository
FATAL: Could not clone
hudson.plugins.git.GitException: Could not clone

A minha pergunta é, como posso configurar as coisas para que o git plugin / msysgit saiba usar uma chave privada SSH específica ao tentar clonar? Eu não acho que o Pageant funcionará porque o serviço Tomcat está sendo executado como o usuário "Sistema Local", mas posso estar errado.

EDITAR:

Eu tentei configurar o Pageant como um serviço (usando o runassvc.exe), passando a chave apropriada e executando como "Sistema Local". O outro serviço parece não conseguir ver a chave do serviço de concurso.

    
por jlpp 11.03.2010 / 19:16

2 respostas

2

Você definitivamente deve conseguir fazer isso em um usuário que não seja do sistema. Escolha / crie um usuário para executar o Hudson e tente conectar-se ao servidor usando ssh user @ host. Se ele pede uma senha, não está encontrando sua chave obviamente.

Nesse caso, verifique novamente se a chave é carregada no concurso (você precisa obter o pageant para carregar a chave relevante do disco toda vez que for iniciado) e se a variável de ambiente GIT_SSH estiver definida.

Uma outra maneira de fazer isso é configurar sua variável de ambiente GIT_SSH para incluir uma referência à chave. Eu atualmente faço isso com tunnelier e SV, então por exemplo minha variável SVN_SSH é "sexec -pk = 1" onde sexec é a CLI ssh do tunnelier e -pk = 1 diz para usar minha chave privada no slot 1.

    
por 02.06.2010 / 05:57
0

Você pode fazer isso usando chaves openssh em vez de usar putty; putty tem o desafio de precisar de execução de pageant, mas com uma chave openssh você só precisa da chave id_rsa para estar em ~ / .ssh

A maneira que eu normalmente faria isso é configurar o Jenkins para ser executado como um novo usuário que eu criei. Eu vou para o diretório home do usuário (C: \ Users \ por padrão no windows vista e posterior) e criar um diretório .ssh onde eu coloquei um arquivo id_rsa com a chave privada que eu quero usar no formato openssh.

Eu só tive que descobrir um truque semelhante no Mac: link

    
por 15.06.2011 / 22:25

Tags