Suposições:
- Você tem um servidor Jenkins com um trabalho de teste em funcionamento
- Você configurou o Capistrano, então pode ligar
cap staging deploy
e funciona.
Objetivo: ter seu aplicativo implantado em uma área de teste após passar nos testes quando você empurra para o remoto.
Etapa 1: Git Hook (obtendo o URL de Jenkin)
Jenkins fornece um URL de acionamento para o trabalho de teste. Claro que você pode pesquisar a partir do repo a partir de x minutos, mas ter o teste acionado apenas quando um push é feito, faz com que os testes falhem mais rápido e economizando tempo e algum processamento e largura de banda no servidor.
Para obter este link:
- Vá para a configuração do seu trabalho (Clique no Trabalho e depois
Configure
) - Sob
Build Triggers
verificar aTrigger builds remotely (e.g., from scripts)
opção. - Em seguida, preencha o campo com um token (pode ser o que você quiser, isso será usado como autenticação). Neste caso, estamos escolhendo ‘MyJobToken’.
- Salve
Então, Jenkins, você fornece um URL no formato:
<jenkins_url>/job/<job_name>/build?token=MyJobToken
Isso significa que, se acessar este URL, o Job será iniciado. Você pode testar chamando-o no navegador e verificando seu trabalho.
Etapa 2: Git Hook (criando o gancho)
Portanto, agora precisamos criar o gancho.
Acesse seu servidor de repositório e vá para:
<repo_dir>/hooks
Copie o arquivo de exemplo para um novo arquivo chamado :post-receive.example
post-receive
~/repo/hooks$: cp post-receive.example post-receive
Edite seu arquivo com o seguinte conteúdo:
#!/bin/sh
curl http://<jenkins_url>/job/<job_name>/build?token=MyJobToken
Não se esqueça de colocar a URL e o token do seu servidor. Além disso, certifique-se de que o curl esteja instalado.
O que está acontecendo?
Um gancho git é um script chamado em alguma ação git. O gancho pós-recebimento é chamado sempre que um push
é feito para o remoto.
Quando isso acontecer, chamaremos a URL do Jenkins que acionará o trabalho de teste, de modo que cada novo push
Jenkins testará o aplicativo.
Etapa 3: Criação de trabalho Capistrano
Agora precisamos criar um Capistrano Job no Jenkins. Preste atenção aqui , porque precisamos tornar o diretório deste Job igual ao diretório do job de teste
- Criar novo trabalho
- Sob clique em
Advanced Project Options
Advanced
- Verifica a
Use custom workspace
- No diretório, coloque o diretório do seu aplicativo
- Escolha o nome que você deseja
- Em
Build
, escolha no menu suspensoExecute Shell
Add build step
- Coloque seu comando capistrano no script:
#!/bin/bash -el
cap staging deploy
- Salve
Certifique-se de que está funcionando (execute o trabalho manualmente !!)
Importante: em Enviroment
, verifique e configure rvm
ou rbenv
se você os usa!
Etapa 4: Acionando Capistrano Job a partir de Testing Job
- Volte para a configuração do trabalho de teste.
- No final, sob escolha .
Post Build Actions
Build other projects
- Coloque o nome de Capistrano Job no campo
- Verifique o rádio
Trigger only if this build is stable
Para testar isso, inicie manualmente o Trabalho de Teste e veja se o Trabalho Capistrano é acionado depois disso.
Empacotando
Agora você tem tudo configurado!
Faça um novo commit, envie para o seu repo. Seu trabalho de teste começará alguns segundos depois disso. Se o teste for aprovado, o Capistrano Job irá iniciar e implantar seu aplicativo.
Agora, você pode testar e implantar apenas empurrando para o remoto!