Dica rápida: integrando Git, Jenkins e Capistrano para implantação contínua

Suposições:

  • Você tem um servidor Jenkins com um trabalho de teste em funcionamento
  • Você configurou o Capistrano, então pode ligar cap staging deploye 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 Triggersverificar a Trigger 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.examplepost-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 pushJenkins 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 emAdvanced Project OptionsAdvanced
  • 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 ShellAdd 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 rvmou rbenvse 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 ActionsBuild other projects
  • Coloque o nome de Capistrano Job no campo
  • Verifique o rádioTrigger 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!