...
| Nota | ||
|---|---|---|
| ||
O procedimento mostrado aqui eh baseado no uso do software Subversion, um classico repositorio cliente-servidor. |
Controle de versões de sistemas
O controlde de versoes de sistemas e seus respectivos codigos-fonte é realizado pelo software Subversion, seguindo a estrutura classica de branches, tags e trunk, conforme:
...
- branches/: Sao usados para trabalhos esporadicos para de correcao de codigo de producao ativo ou antigo. Todos podem escrever aqui. Para cada correcao, um branche novo eh criado a partir de uma tag "R" de producao (a ultima ou uma antiga). A correcao (commits) ocorrem aqui ate que o codigo possa ser homologado. Nesse caso, a equipe de QA copia esse codigo para uma nova tag "V" e o ciclo de homologacao acontece, ate que uma tag "R" seja produzida. Se o branche de correcao equivaler ao ultimo codigo de producao (ativo), entao a saida do codigo "R" deve voltar para o desenvolvimento (merge), caso contrario, eh facultativo esse retorno para o desenvolvimento (uma vez que era uma versao antiga do software, talvez esse problema ja tenha sido trabalhado no fluxo trunk/, ou mesmo esse problema nao ocorre nas versoes mais novas ou ativa do sistema).
Casos de Uso
Indicam, cada um, os principais processos relacionados ao gerenciamento de codido-fonte e artefatos produzidos pela equipe de desenvolvimento:
Caso de uso: Promocao de codigo fonte de desenvolvimento ate producao
Objetivo | Realizar todo o fluxo de criacao, alteracao e remocao de codigo-fonte ate entrada em producao, habilitando pontos de checagem para posterior volta de versao. |
Ator principal | QA |
Atores envolvidos | Desenvolvimento, Usuario, Administador |
Resumo | Seguir o fluxo de operacoes: trunk/ (commits de desenvolvimento) > tag "v" (copia do trunk) > hml/ (commits de qualidade) > tag "r" (copia da homologacao) > (merge para desenvolvimento) trunk/ & (copia para producao) prod/ > (branche para correcao) > tag "r". |
Premissas
- Todo o desenvolvimento ocorre na pasta trunk/ do projeto.
- Existe integração contínua diária automática na pasta trunk/.
- Commits na pasta trunk/ não podem quebrar a compilação do projeto.
- Toda equipe de desenvolvimento pode realizar commits na pasta trunk/.
- Existe um branche de homologação, chamado hml/.
- Existe integração contínua no branche de homologação, que é iniciada manualmente pelo homologador do sistema no momento de iniciar um novo processo de homologação.
- O branche de homologação visa conter código de estabilização e validações finais antes da entrada de produção.
- Todo codigo de homologação deve ser marcado (tageado) na sua entrada (com a tag "v") e na sua saída (com a tag "r").
- O código de homologação é proveniente do código de desenvolvimento, devidamente tageado.
- Toda homologação de sucesso deve gerar uma tag "r", que visa marcar código estavel para entrada em produção.
- Existe um branche de produção, chamado prod/.
- Não existe integração contínua para código de produção.
- O branche de produção visa conter código de produção, efetivamente validado pela homologação.
- Os unicos commits validos no branche de produção deve ser os relativos ao processo de merge, proveniente da tag "r".
- Na eventualidade de existir correcoes em codigo de producao, um branche especifico deve ser criado.
- A finalizacao de uma correcao de producao no branche relacionado deve ser encerrada com uma tag "r" e, a partir disso, um processo de "build" manual deve ser realizado.
Fluxo Principal
- Desenvolvimento diario
- Programador realizar checkout da pasta trunk/.
- Programador realizar alteracoes e commits na pasta trunk/.
- Promocao para homologacao (equipe e usuarios acordar momentos adequados, exemplo, a cada 15 dias)
- QA criar tag "v", marcando o incio de revisao de homologacao.
- QA copiar ultima versao da pasta trunk/ para dentro da tag "v".
- QA apagar conteudo da pasta hml/.
- QA copiar conteudo da tag "v" para dentro da pasta hml/
- QA realizar checkout da pasta hml/.
- QA realizar testes unitarios e integrados, alteracoes corretivas e commits na pasta hml/, se necessario.
- QA invocar integracao continua da homologacao.
- Usuario testar funcionalmente aplicacao em ambiente de homologacao.
- Repetir 08 até encerrar o ciclo de correções.
- Usuario protocolar aceite de homologacao.
- QA atualizar arquivo "release-notes" do projeto na pasta hml/.
- QA realizar commit final de revisao de homologacao na pasta hml/.
- Promocao para producao
- QA criar tag "r", marcando o fim de revisao de homologacao.
- QA apagar conteudo da pasta prod/.
- QA copiar conteudo da pasta "r" para dentro da pasta prod/.
- QA comunicar Administrador de nova versao de producao disponivel.
- Administrador realizar deployment de producao.
- Reintegracao de desenvolvimento
- QA realizar checkout da pasta trunk/.
- QA realizar merging da pasta hml/ para pasta trunk/ local.
- QA resolver conflitos na pasta trunk/ local.
- QA realizar commits de resolucao de conflitos na pasta trunk/.
- Programador realizar update na pasta trunk.
REFERENCIAS
http://svnbook.red-bean.com/en/1.0/ch04s04.html#svn-ch-4-sect-4.1![]()
...