Deploy automatizado de pull request com Heroku e Github

Já pensou o quanto pode agilizar o processo de desenvolvimento e code review se para cada pull request no repositório houvesse um ambiente deployado ?

Com Heroku isso é possível e bem simples graças ao Review Apps.

Antes de mais nada é necessário ter uma conta no Heroku, se você ainda não tem crie a sua

Você também precisará de uma aplicação funcional em um repositório do Github, afinal, temos que deployar algo. Para ilustrar esta postagem usaremos o Gamou, projeto open-source que venho desenvolvendo.

Acesse o dashboard do Heroku e vá em ‘New’ -> ‘Create new app’

Irá aparecer uma tela semelhante a esta, preencha as informações do seu projeto

Create new app

Em seguida em Deployment Method selecione Github e procure o repositório

Deployment Method

Clique em ‘Connect’

Escolha a branch de sua preferência e clique em ‘Enable Automatic Deploys’

Enable Automatic Deploys

E clique em ‘Deploy Branch’

Aguarde o deploy… e pronto! Temos o nosso projeto no ar, clique em ‘Open app’ e abrirá um link semelhante a este https://gamou.herokuapp.com/

Agora iremos configurar os deploys de pull request

Primeiro você precisará criar um arquivo chamado app.json na raiz do seu repositório

Configure conforme os dados do seu projeto

{
  "name": "Gamou",
  "description": "Gamou its a gamification project",
  "website": "https://gamou.herokuapp.com/",
  "success_url": "/",
  "addons": ["heroku-postgresql:hobby-dev"],
  "env": {
    "RAILS_ENV": "production",
    "COOKIE_SECRET": {
            "description": "This gets generated",
            "generator": "secret"
    },
    "SETUP_BY": {
            "description": "Who initiated this setup",
            "value": "",
            "required": false
    }
  },
  "scripts": {
    "postdeploy": "bundle exec rake db:migrate"
  }
}

OBS: em scripts você pode configurar comandos personalizados para executar antes ou depois do deploy. No nosso caso estamos rodando uma migration

Atualize o seu App e aguarde o deploy.

Feito isto vá em ‘Pipeline’ -> ‘Settings’ -> ‘Enable Review Apps’

Enable Review Apps

Marque a opção ‘Automatically create review apps for new PRs’

Automatically create review apps for new PRs

Você também pode adicionar outras configurações conforme a sua preferência

Se tudo deu certo você já está com as Review Apps funcionais, a cada pull request o heroku criará um ambiente novo e no seu Github você verá algo como isto:

View Deployment

Se você quer fazer um comentário ou teve alguma dificuldade, abra uma issue no repositório do blog


Obrigado