Lo script deploy dovrebbe essere un artefatto della build?


13

Questo è un progetto web scritto in Java.

Quindi, sto scrivendo gli script build e deploy. Per creare la build, ho usato la formica. La build continua viene eseguita con Jenkins.

La build genera 3 diversi artefatti:

  1. Il file di guerra
  2. Una zip con layout
  3. Una zip con immagini

Fin qui tutto bene, ma ora devo scrivere lo script deploy, che dovrebbe:

  • Distribuisci la guerra (artefatto 1) sul tomcat in esecuzione sul server 1
  • Posizionare l'artefatto 2 sul server 1 in una directory specifica
  • Posizionare l'artefatto 3 sul server 2 in una directory specifica

Quindi stavo parlando con il mio collega e ha detto che dovremmo anche generare un artefatto (forse deploy.xml ) che distribuisce questi artefatti quando viene posizionato sul server corretto.

Quindi ci sarebbe un altro copione, che dovrebbe:

  • Scarica i manufatti di jenkins
  • scp su ciascun server e posizionare lì il file deploy.xml
  • invocare in remoto deploy.xml

Ciò che mi mette un po 'a disagio è l'atto di avere deploy.xml come artefatto build. La motivazione alla base di ciò sarebbe quella di essere in grado di effettuare una distribuzione senza la necessità di avere accesso ai repository VCS, quindi una build sarebbe autonoma, ovvero qualsiasi build potrebbe andare in produzione solo con ciò che è stato generato da Jenkins.

Dove dovrebbero essere collocati gli script di distribuzione? Dovrebbero essere solo al VCS o dovrebbero essere anche artefatti da costruire?


questa domanda è buona / ci fa venir voglia di più-uno / vorrei poter rispondere
amara

Risposte:


6

La mia esperienza è che tutto ciò che può essere automatizzato dovrebbe essere. Se riesci a descriverlo come passaggio 1, passaggio 2, .... allora dovrebbe essere uno script. Se lo script può essere generato automaticamente per includere informazioni specifiche sulla build (ad es. Tag di revisione), è quello che dovresti fare. Questo non è per amore di essere pigro, ma per essere prevedibile e riproducibile .

Nota bene: dovresti anche avere uno script di ripristino generato automaticamente che può essere utilizzato da tutti i membri del team nel caso in cui lo script di distribuzione generato automaticamente diventi pazzo e manchi il server di produzione.


3

Tutto ciò che Peter Rowell ha scritto, è corretto, inoltre vorrei:

Per il file di script deploy

  • se è stato scritto da qualcuno, deve essere nel controllo della versione.
  • se è stato generato e può essere generato di nuovo, di solito non passa al controllo versione.

Per il processo di distribuzione:

  • Se desideri che i tuoi artefatti siano autonomi e che possano essere eseguiti facilmente, il file potrebbe essere un artefatto di compilazione, il che significa che è impacchettato con il risultato di compilazione in modo tale da essere utilizzabile per la distribuzione.
  • D'altra parte, le distribuzioni diventano sempre più complesse, così prima o poi avrai bisogno di un programma dedicato (leggi un po 'di codice) che esegua la distribuzione e un artefatto di build Jenkins non è più autonomo.

Ciò dipende piuttosto dal processo e da come ti piace gestire le distribuzioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.