Credenciais e Repositórios
O uso de credenciais para obter acesso a repositórios e outros recursos é fundamental no Jenkins. Felizmente o Jenkins faz um controle centralizado de credenciais que podem ser referenciados em diversos jobs. Esta seção tem como objetivo cobrir os basico sobre como fazer e usar uma credencial de acesso a um repositório para que o Jenkins tenha acesso ao código fonte de seu projeto.
Criar uma credencial
Alguns itens são necessários para que se configure corretamente as credenciais de acesso a um respositório(Github, Bitbucket entre outros), o mínimo que você tem que garantir são as credenciais de um usuário que tenha acesso de leitura ao respositório em questão, você vai precisar também configurar uma chave pública e privada para sua conta github ou gitbucket para fazer acesso via SSH. Uma boa ideia seria criar uma conta de usuário no github ou gitbucket que represente o Jenkins e colocar ele com acesso somente de leitura no seus projetos para separação de tarefas.
Para criar uma autenticação utilizando o mínimo de configuração, logado como administrador clique em credentials
(em geral o último item do menu à esquerda). Log em seguida acesse:
credentials > System > Global credentials
Em seguida clique em Add Credentials
no canto superior esquerdo.
Já na tela de criação de autenticação, você verá que existem diversos métodos de autenticação que o Jenkins pode utilizar para ter acesso a um recurso qualquer.
Nossa experiência neste projeto, nos fez concluir que autenticação utilizando username
e password
não funciona muito bem para serviços como github e bitbucket. Logo demonstraremos aqui como fazer autenticação via chaves SSH.
Atenção!
Para uma maior segurança certifique-se que o seu servidor esteja devidamente protegido antes de continuar com as intruções abaixo. Certifique-se que ele esteja rodando somente na rede interna da sua infraestrutura ou utiliza um proxy com um certificado digital para estabelecer uma conexão segura. Expor o servidor na web sem nenhum certificado digital deixa sua solução vulnerável a ataques de terceiros, e se houver credenciais cadastradas no Jenkins, o potencial de estrago é ainda melhor, pois o invasor poderá utilizar as informações contidas nele para comprometer seus repositórios. Então todo o cuidado é pouco.
Esta é a tela que o Jenkins te apresenta para o cadastro de uma credencial SSH:
- Selecione a opção
SSH Username with private key
- No campo
Username
insira o nome de usuário que você utiliza para logar no repositório. - Em
Private Key
o Jenkins pede para você inserir a sua chave SSH privada que será utilizada por ele na hora de autenticar. Existem três métodos que você pode fazer isso, sendo o mais simples a opçãoEnter directly
. Selecione esta opção e cole no campo de texto o arquivo de chave primária. (Provavemente se chama id_rsa, e está no diretório, ~/.ssh no seu computador). Mais uma vez, esta é uma informação sensível, então tenha certeza que a sua instância Jenkins esteja devidamente protegida. - Preencha o
passphrase
, este valor é o mesmo que você definiu quando criou sua chave primária. - Os dois útimos campos são só para controle interno.
- Em ID, defina um identificador único que será utilizado pelo Jenkins para referenciar esta credencial.
Description
é um campo livre que pode ser utilizado para colocar informações adicionais da credencial e não é obrigatório.
Feito isso você já terá criado uma credencial que poderá ser utilizada para clonar repositórios públicos e privados. Repita este processo quantas vezes desejar para cadastrar diversas credenciais para diversos repositórios.
O tópico seguinte aborda sobre o uso e a configuração de um plugin que pode ser muito útil entre jobs de um mesmo projeto: o shared workspace
.
Uso Inteligente de espaço com o shared workspace.
Shared workspace é um plugin desenvolvido que muda a forma como os jobs estão organizados no diretório interno do Jenkins. A forma tradicional que o jenkins organiza os arquivos é um novo diretório para cada job. Logo se você separa o build os testes em dois jobs distintos, você acaba replicando os arquivos baixados de forma desnecessária.
O shared workspace vem para ajeitar as coisas. Com ele você especifica um único diretório para ser utilizado por um conjunto de jobs.
- A instalação do plugin é tranquila e não tem nada de especial. Simplesmente acesse a página de plugins, procure pelo plugin
Shared Workspace
, instale e reinicie o servidor.
Feito isso acesse a página de configurações gerais do Jenkins. Escolha a opção Configure System
, agora é para aparecer uma seção chamada Workspace Sharing.
Clique em
Add
e coloque o nome a URL do repositório desejado nos campos fornecidos. É importante que se utilize uma URL no padrão SSH para que se possa utilizar autenticação via SSH. Feito isso o Jenkins irá criar uma pasta com o nome definido no camponame
.Quando você criar um Job novo, o shared workspace cria um dropdown box com os shared workspaces para você escolher.
Importante notar que quando o job a ser criado for de build, você deve informar o repositório e escolher uma credencial para que o Jenkins, faça o acesso e baixe os códigos fontes e outros arquivos.
Quando você criar outro job, que não seja de build, basta informar o shared workspace para ter acesso aos recursos, sem ter que fornecer respoistórios e credenciais.