Skip to content
DaniloQueiroz edited this page Aug 5, 2012 · 9 revisions

O Figgo possui dois ambientes de execução: http://www.oggif.com.br e http://www.figgo.com.br.

Para liberar uma nova versão deve ser feito primeiro um deploy para o Ambiente de Staging, verificado o funcionamento dos recursos básicos da aplicação e então feito o deploy pra Produção.

Desta forma sempre que uma nova versão entrar em Produção, ela deve ser a ultima versão do Stagging. Pode-se efetuar deploys no ambiente de Staging sempre que for necessário testar/avaliar uma versão/funcionalidade.

Branches

O branch release deve conter sempre a ultima versão em produção. Sempre que um hotfix for gerado para uma versão em produção este deve ser feito no master e então feito cherry-pick para o branch release (caso o branch master contenha outras mudanças que ainda não estejam prontas para entrar em produção) ou um rebase como indicado a seguir.

Atualizando o branch release

Após realizar os passos a seguir, é necessário fazer push do branch para o repositório remoto, contudo, muitas vezes, devido ao rebase é preciso forcar a atualização:

git push origin release --force

Sincronizando com o master

git checkout release
git rebase master

Esta opção adiciona todos os commits do master ao branch release. Em geral ao efetuar esta operação ocorre um conflito com o arquivo version, em geral para resolvê-lo basta:

git add version
git rebase --continue

Aplicando apenas um hotfix

git checkout release
git cherry-pick <SHA-commit_to_pick>

Efetuando deploy

No branch releases você encontrará um script chamado deploy.sh, este script ajudará no processo de deploy. Antes de executá-lo é necessário definir a variável de ambiente GAE_JAVA_HOME apontando para o diretório de instalação do Google App Engine SDK.

Deploy Stagging

GAE_JAVA_HOME=/usr/lib/gae-sdk/java ./deploy.sh

Deploy Produção

GAE_JAVA_HOME=/usr/lib/gae-sdk/java ./deploy.sh --app figgo-octa

Atualizando Indices

Sempre que os índices forem modificados é necessário mandar reconstruir os índices e remover os antigos. Em geral um índice precisa ser modificado quando alguma Query que utiliza ordenação específica, ou que fazem comparação de diferentes valores, é alterada. Consulte a documentação do [https://developers.google.com/appengine/docs/java/config/indexconfig](Google App Engine) para mais detalhes.

Após alterar os índices os mesmos devem ser atualizados: (Staging)

mvn clean war:exploded
appcfg.sh -A dev_figgo update_indexes target/deploy
appcfg.sh -A dev_figgo vacuum_indexes target/deploy

(Produção)

mvn clean war:exploded
appcfg.sh -A figgo-octa update_indexes target/deploy
appcfg.sh -A figgo-octa vacuum_indexes target/deploy

Atualizando Models

Sempre que um dos Models tiver um atributo adicionado, removido ou modificado (mudança de tipos) é necessário realizar uma migração, ou seja, modificar os dados existentes para incluir/remover/modificar o atributo em questão.

TBD