Este projeto implementa a visão que a nossa equipe acredita ser a melhor forma de trabalhar com controle de versão e deploy do projeto.
Cada ambiente está ligado diretamente a um branch. No nosso caso, temos 3(três) branchs principais:
- master: é onde fazemos o desenvolvimento das histórias. Não pode ter impedimentos por conta de subidas semanais que fazemos.
- staging: é o ambiente de testes interno. Sempre que compartilhamos o código, fazemos deploy para esse ambiente.
- production: é o ambiente usado pelos clientes. Ele é construido a partir do ambiente staging.
- Verifica se tem alguém integrando e bloqueia, caso tenha.
- Só executa se não tiver nada para ser commitado.
- Limpa a pasta de log e temp, do projeto.
- git pull --rebase, para não criar um commit de merge. Consultamos o histórico, os commits de merge atrapalham ;)
- Atualizar novas dependências, caso tenha sido adicionada: bundle install
- Limpa o ambiente local, para verificar as mirations: rake db:drop db:create db:migrate db:seed db:test:prepare
- Roda os testes: rake test
- Garante que está na master, só fazemos integração por ela
- Garante que a sua branch staging está atualizada e faz rebase da master: git checkout staging" git pull --rebase git rebase master git push origin staging git checkout master
- Compartilha o código: git push
- Adiciona uma variável no heroku para informar que você está fazendo deploy
- Manda a branch staging para o projeto de staging no heroku: git push [email protected]:#{APP}.git staging:master
- Roda as migrações no ambiente de staging: heroku run rake db:migrate --app #{APP
- Roda o seed: heroku run rake db:seed --app #{APP}
- Reinicia o ambiente de staging: heroku restart --app #{APP}
- Remove a variável do heroku que informar que você estava fazendo deploy
- Cria o projeto
- Cria o projeto local
- git init
- git commit
- Cria o projeto no github(ou qualquer outro) e define ele como origin
- Define o origin como upstream da master:
git push origin master --set-upstream
- Cria dois projetos no Heroku, um para cada ambiente
- um com o sufixo -staging
- um com o sufixo -production
- Adiciona a gem em
gem 'integrate', git: '[email protected]:Easyfood/integrate.git'
- Criar a branch staging a partir da master:
git checkout staging
- Define o origin como upstream desse branch:
git push origin staging --set-upstream
- Criar a branch production a partir da staging:
git checkout production
- Define o origin como upstream desse branch:
git push origin production --set-upstream
- Caso precise usar um nome diferente no Heroku, adicione uma task no Rakefile do seu projeto:
task :force_different_name_for_heroku_project do
ENV['PROJECT'] = 'pre-nutrebem'
end
Rails.application.load_tasks # Se for um projeto Rails
Rake::Task['integration:environment'].enhance [:force_different_name_for_heroku_project]