O script de implementação deve ser um artefato da construção?


13

Este é um projeto da Web escrito em Java.

Então, estou escrevendo os scripts de compilação e implantação. Para criar a compilação, usei ant. A construção contínua é feita com Jenkins.

A construção gera 3 artefatos diferentes:

  1. O arquivo de guerra
  2. Um zip com layouts
  3. Um zip com imagens

Até agora, tudo bem, mas agora preciso escrever o script de implantação, o que deve:

  • Implemente a guerra (artefato 1) no tomcat em execução no servidor 1
  • Coloque o artefato 2 no servidor 1 em um diretório específico
  • Coloque o artefato 3 no servidor 2 em um diretório específico

Então, eu estava conversando com meu colega e ele disse que também deveríamos gerar um artefato (talvez deploy.xml ) que implante esses artefatos quando colocados no servidor correto.

Portanto, haveria outro script que:

  • Faça o download dos artefatos de jenkins
  • scp para cada servidor e coloque o deploy.xml lá
  • chamar remotamente o deploy.xml

O que me deixa um pouco desconfortável é o ato de ter o deploy.xml como um artefato de construção. A motivação por trás disso seria ser capaz de fazer uma implantação sem precisar ter acesso aos repositórios VCS, para que uma construção fosse independente, ou seja, qualquer construção poderia entrar em produção apenas com o que foi gerado por Jenkins.

Onde os scripts de implantação devem ser colocados? Eles devem estar apenas no VCS ou também devem criar artefatos?


esta pergunta é boa / it nos faz querer mais-um / desejo que eu pudesse responder
amara

Respostas:


6

Minha experiência é que tudo o que pode ser automatizado deve ser. Se você pode descrevê-lo como etapa 1, etapa 2, .... então deve ser um script. Se o script puder ser gerado automaticamente para incluir informações específicas da compilação (por exemplo, tag de revisão), é isso que você deve fazer. Isso não é para ser preguiçoso, mas para ser previsível e reproduzível .

Nota: você também deve ter um script de reversão gerado automaticamente que possa ser usado por qualquer pessoa da equipe, caso o script de implantação gerado automaticamente fique totalmente louco e faça mangueiras no servidor de produção.


3

Tudo o que Peter Rowell escreveu, está correto, além disso eu:

Para o arquivo de script de implementação

  • se foi escrito por alguém, ele precisa estar no controle de versão.
  • se foi gerado e pode ser gerado novamente, geralmente não entra no controle de versão.

Para o processo de implantação:

  • Se você deseja que seus artefatos sejam independentes e se puderem ser feitos com facilidade, o arquivo pode ser um artefato de construção, o que significa que é empacotado com o resultado da construção de tal maneira que é utilizável para implantação.
  • Por outro lado, as implantações tornam-se cada vez mais complexas; mais cedo ou mais tarde, você precisará de um programa dedicado (leia algum código) que faça a implantação e um artefato de construção Jenkins não será mais contido.

Isso depende bastante do seu processo e de como você gosta de lidar com implantações.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.