Pergunta

Então, na sua experiência, qual é a melhor maneira?Existe uma maneira segura que também pode ser programável/disparada em uma ferramenta de automação de construção?

Editar:Devo mencionar que este é windows/.net e irei implantar no iis6

Foi útil?

Solução

Para alguns projetos que uso Capistrano empurrar para fora para viver.Ele é construído sobre Ruby e torna a escrita de scripts de implantação muito fácil e usa ssh.

Em outros projetos, tenho um pequeno aplicativo de implantação que usa o bash para fazer uma exportação svn para um diretório temporário e depois sincronizá-lo novamente para o servidor ativo.Você pode fazer o rsync usar ssh.

Eu prefiro muito o método Capistrano, mesmo que seu projeto não esteja em Ruby/Rails.

Outras dicas

Parece o tipo de coisa que poderia ser feita facilmente com SFTP.Dê uma olhada Massa (psftp e pscp) ou WinSCP para Windows ou sincronizar novamente e OpenSSH para Unixes.

@Neall, eu adicionaria um set -e na segunda linha, porque você não quer que o site ativo seja substituído se o rsync falha por qualquer motivo. set -e faz com que o script seja encerrado se algum de seus comandos falhar.

Editar:O set -e deve ser a primeira coisa no script, logo após #!/bin/bash.

Faça uma cópia do diretório ativo do seu site, use sincronizar novamente para atualizar essa cópia com sua versão mais recente e renomeie os diretórios ativo e atualizado para que a versão atualizada agora esteja ativa.

Na festa:

#!/bin/bash

set -e
cp -R /var/livesite /var/newversion
rsync user@devserver:/var/readytogolive /var/newversion
mv /var/livesite /var/oldlivesite
mv /var/newversion /var/livesite

Viola!

Editar:@Ted Percival - É uma boa ideia.Eu nem sabia sobre "set -e".Roteiro atualizado.Editar:atualizado novamente por sugestão de Ted (embora eu ache que ainda funcionaria se de alguma forma o comando cp falhasse, e se cp falhar, você provavelmente terá problemas mais sérios).

Vou apoiar a recomendação para Capistrano, embora se você estiver procurando por uma solução baseada em GUI, você pode tentar o Webistrano front-end.Semântica de implantação e reversão limpa, baseada em ssh e sã, além de scripts fáceis e extensibilidade via Ruby.

Você sempre pode escrever um pequeno aplicativo cliente/servidor que criptografe na origem, envie os arquivos e descriptografe no destino.Isso é um pouco trabalhoso, mas provavelmente uma quantia trivial.E é programável, desde que sua ferramenta de automação suporte a execução de algo no sistema de arquivos (o que acho que todos suportam).

A única desvantagem é que talvez você não consiga receber mensagens de erro significativas em caso de falha em seu ambiente de integração sem um pouco mais de trabalho de sua parte (embora, dependendo da sua configuração, isso possa ser tão simples quanto enviar mensagens de erro para stdout).

hm, por aqui usamos um "servidor" de teste para fins de teste no ambiente ativo (na verdade, é um host virtual apache no servidor de produção) e fusão de araxis (uma ferramenta de comparação de arquivos linha por linha realmente inteligente) para sincronizar o desenvolvimento e a preparação.

uma vez testado, apenas;substitua os arquivos no webroot de produção :)

/mp

Em um trabalho freelance que fiz, montamos três ambientes separados.

  • Um servidor Dev, que executou continua compilações usando CruiseControl.Qualquer check-in desencadearia uma construção.O teste de controle de qualidade foi feito aqui.
  • Um servidor de teste no qual o teste de aceitação do usuário foi feito.
  • Produção.

O fluxo de trabalho foi o seguinte:

  1. O desenvolvedor faz check-in das alterações no SourceControl.
  2. CruiseControl compila e implanta a compilação no Dev.
  3. Dev tem controle de qualidade
  4. Depois de passar no controle de qualidade, é executado um script robocopy que implanta a compilação Dev para teste.
  5. O teste é UAT
  6. Após a aprovação do teste, é executado um script robocopy que implanta o teste no PRD.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top