Gostaria que o Jenkins buscasse automaticamente dados do meu repositório privado hospedado no Github. Mas não tenho idéia de como realizar essa tarefa. Tentei a documentação, gerando ssh-key para o usuário jenkins e tudo o que vejo é: "incapaz de clonar o repositório". Eu verifiquei os URLs - eles são válidos.
Alguma pista, talvez você conheça alguns documentos / blogs / o que quer que esteja descrevendo esse tipo de coisa?
Respostas:
Talvez o suporte do GitHub para implantar chaves seja o que você está procurando? Para citar essa página:
Se é isso que você já está tentando e não funciona, convém atualizar sua pergunta com mais detalhes dos URLs que estão sendo usados, os nomes e o local dos arquivos principais etc.
Agora, para a parte técnica: Como usar sua chave SSH com Jenkins?
Se você possui, digamos, um
jenkins
usuário unix, pode armazenar sua chave de implantação~/.ssh/id_rsa
. Quando Jenkins tenta clonar o repositório via ssh, ele tenta usar essa chave.Em algumas configurações, você não pode executar o Jenkins como uma conta de usuário e, possivelmente, também não pode usar o local padrão da chave ssh
~/.ssh/id_rsa
. Nesses casos, você pode criar uma chave em um local diferente, por exemplo~/.ssh/deploy_key
, e configurarssh
para usar isso com uma entrada em~/.ssh/config
:Como tudo o que você autentica em todos os repositórios do Github usando
[email protected]
e você não deseja que a chave acima seja usada para todas as suas conexões com o Github, criamos um alias de host github-deploy-myproject . O URL do seu clone agora se tornae é também isso que você coloca como URL de repositório no Jenkins.
(Observe que você não deve colocar ssh: // na frente para que isso funcione.)
fonte
ssh-keygen
como o usuário Jenkins como ("jenkins" no meu servidor Ubuntu). Em seguida, adicionei~jenkins/.ssh/id_rsa.pub
à seção deploy keys do repositório no github.~
diretório. Mas/var/lib/jenkins/.ssh/
para o usuário jenkins padrão usar essas chaves!/var/lib/jenkins
é o diretório inicial (~
) dojenkins
usuário.Could not match github-deploy-myproject:myuser/myproject
no log do gancho. Eu inseri isso como meu URL de repositório e as compilações funcionam para que ele possa acessar o GitHub. É apenas a postagem do GitHub que falha ao acionar a compilação.Uma coisa que fez isso funcionar para mim é ter certeza de que
github.com
está dentro~jenkins/.ssh/known_hosts
.fonte
Se você precisar que o Jenkins acesse mais de um projeto, será necessário:
1. adicionar chave pública a uma conta de usuário do github
2. adicionar esse usuário como proprietário (para acessar todos os projetos) ou como colaborador em cada projeto.
Muitas chaves públicas para um usuário do sistema não funcionarão porque o GitHub encontrará a primeira chave de implantação correspondente e retornará um erro como "ERRO: Permissão para o usuário / repo2 negada ao usuário / repo1"
http://help.github.com/ssh-issues/
fonte
Jenkins cria um usuário Jenkins no sistema. A chave ssh deve ser gerada para o usuário Jenkins. Aqui estão os passos:
Agora você pode criar uma credencial Jenkins usando a chave SSH No painel do Jenkins Adicionar credenciais
selecione esta opção
fonte
Eu tive um problema semelhante com o gitlab. Acontece que eu havia restringido os usuários que têm permissão para fazer login via ssh. Isso não afetará os usuários do github, mas, caso as pessoas acabem aqui por problemas no gitlab (e similares), certifique-se de adicionar
git
aAllowUsers
configuração em/etc/ssh/sshd_config
:fonte
Outra opção é usar os tokens de acesso pessoal do GitHub :
https://github.com/my-username/my-project.git
) .github-token-for-my-username
Eu testei isso no Jenkins ver. 2.222.1 e Jenkins GitHub plugin 1.29.5 com um repositório GitHub particular.
fonte
Uma alternativa à resposta de sergey_mo é criar várias chaves ssh no servidor jenkins.
(Embora, como disse o primeiro comentarista da resposta de sergey_mo, isso possa acabar sendo mais doloroso do que gerenciar um único par de chaves.)
fonte