Implemente o aplicativo da Web em teste - produção com subversão

2

Estamos criando um aplicativo da Web e estamos quase prontos para iniciar a implantação em um servidor de produção. Estamos usando o Subversion para controle de versão e agora estou imaginando qual seria a melhor maneira de implantar para o armazenamento temporário e depois para a produção.

Neste momento, desenvolvemos e testamos com 2 pessoas localmente nas nossas próprias máquinas e comprometemo-nos com o nosso servidor de teste que é o nosso servidor SVN.

Eu sei que existe um gancho post-commit.tmpl que pode executar um script? Alguém sabe um bom recurso para esse tipo de scripts.

Todas as dicas são bem vindas! Estamos procurando uma maneira fácil de implantar e possivelmente reverter nosso código para uma versão anterior.

    
por solsol 23.12.2009 / 20:21

5 respostas

4

Subversion é um sistema de controle de versão, não um sistema de implementação. Não use isso. Como você está fazendo tudo o que é manual neste momento (criação e teste) eu também implantaria manualmente, isso também pode significar que você escreve alguns scripts que verificam a versão correta da subversão e a implementam em qualquer ambiente que você queira.

Se você quiser automatizar mais, eu recomendaria um servidor de IC ou algum tipo de solução de implantação para isso. Estamos começando a usar o Hudson para testes e implantação (pelo menos para o ambiente sandbox). Nós não pretendemos usá-lo para produção. Porque ainda não fizemos o check-in no plugin de promoção. Ao pesquisar servidores de IC, percebi que os sistemas comerciais geralmente oferecem um melhor suporte para o gerenciamento de versões.

    
por 23.12.2009 / 20:37
2

Existem várias maneiras de fazer isso:

Use um servidor de compilação

Já ouvi falar de equipes que usam o CCNET.net ou o FinalBuilder Server para isso. Basicamente, o que acontece é que o script de construção tem código para empurrar a compilação mais recente, toda vez que alguém faz um check-in. Eu não recomendaria isso para a produção. Isso deve funcionar bem para um ambiente de teste.

Não estou muito familiarizado com os servidores de compilação no Linux, mas sei que existem alguns. Há também Ant e até mesmo scripts que podem ser usados para isso.

Coloque uma cópia de trabalho no servidor de teste

Basta fazer um check-out e mapear a pasta correta para ser a raiz do aplicativo da web. Alguém da equipe terá que atualizar manualmente essa cópia de trabalho, mas isso dá a você a flexibilidade de reverter para uma versão anterior, se necessário.

Advertências

Você precisará garantir a exclusão das pastas .svn ao apontar o site para a cópia de trabalho.

Eu não recomendaria usar um script de gancho do Subversion para isso. Você pode muito bem usar qualquer mecanismo de script disponível no Linux para fazer scripts de pós-commit. Eu digitei "post-commit hook script linux" no Google e consegui alguns bons resultados.

    
por 23.12.2009 / 20:41
2

Esta pergunta é realmente uma questão sobre procedimentos de lançamento (e ferramentas), em vez de administração do sistema, mas aqui está minha melhor resposta:

Qualquer versão recente do Subversion cuida muito bem das suas necessidades de gerenciamento de configuração, mas, como Peter disse, não é uma ferramenta de implantação. Uma opção seria criar uma implantação em sua infraestrutura de criação regular (por exemplo, "fazer implantação") e gerenciar suas regras de implantação ao lado de seu código.

Do ponto de vista do gerenciamento de configuração, você precisa acompanhar tudo que seu aplicativo precisa para funcionar, incluindo código, bibliotecas externas (em versões específicas), servidor da web, versões do sistema operacional, etc. 'make deploy' deve tentar garantir todas essas coisas existem antes de tentar implantar uma nova versão.

Ferramentas como o Hudson também podem lidar com a implantação para você, mas você ainda precisará dizer o que fazer e eu simplesmente prefiro manter meus procedimentos de gerenciamento de configuração o mais simples possível. Um exemplo seria permitir que Hudson invoque 'make deploy', mas não armazene nenhuma outra informação no Hudson que você precise recuperar para recriar em máquinas adicionais.

Com que frequência você fará liberações que precisam ser implantadas? Eu consideraria algo ao longo das linhas de marcação de seu webapp em tags / e ter um mecanismo de pós-commit que sabe que as tags / webapp-1.0.4 precisam ser exportadas para seu webroot. Se o seu webapp for grande, considere fazer com que o hook solte um arquivo especial em / tmp que um cronjob verifica a cada minuto e toma a ação apropriada.

Se você quiser uma resposta mais detalhada, elabore o cronograma de lançamento, o tamanho da base de código, a escolha da linguagem, o ambiente do SO e as dependências.

    
por 23.12.2009 / 21:32
0

Também usamos o Subversion para controlar nossa fonte, mas usamos o Webistrano para implantar do Subversion em nossos servidores.

Webistrano é uma interface web para Capistrano , uma ferramenta popular de implantação e automação na comunidade Ruby. Ele permite que você descreva seu processo de implantação em scripts Ruby (a maior parte da funcionalidade está incorporada). É bastante flexível e fácil de entender. Implantar e retroceder implementações é fácil, assim como enganchar outras tarefas que precisam ser feitas, como liberar caches ou migrar bancos de dados.

    
por 10.06.2012 / 21:00
0

Consegui fazer isso criando um novo arquivo post-commit com as duas linhas a seguir:

#!/bin/bash
ssh -i /path/to/key-file  -pSSH-PORT user@hostname svn update /path/to/project/folder/
    
por 25.12.2015 / 16:06