Creazione di software con numeri di versione

6

Questa non è una domanda su come numerare le versioni.

Abbiamo un'applicazione con un determinato schema di numerazione delle versioni. Abbiamo anche un server CI Jenkins (presto sostituito con Atlassian's Bamboo) che costruisce regolarmente il nostro software. L'applicazione mostra il numero di versione, quindi è scritto in uno dei file nella nostra base di codice.

Non vogliamo modificare manualmente il numero di versione prima di rilasciare una versione. La nostra soluzione attuale è che abbiamo un lavoro di Jenkins che modifica il numero di versione nel nostro codice, lo impegna, etichetta il repository con il numero di versione, lo spinge e quindi impacchetta l'applicazione per la distribuzione. Il problema è che dobbiamo decidere di rilasciare una versione prima che la compilazione abbia esito positivo o negativo.

Quello che vogliamo fare è questo: fare in modo che Jenkins costruisca regolarmente il nostro prodotto ed esegua i test unitari. Successivamente, vogliamo selezionare una compilazione passante e rilasciarla con un certo numero di versione.

In sintesi, questa è la procedura che desidero:

  • Jenkins costruisce e testa regolarmente il nostro prodotto.
  • Quando vogliamo rilasciare una versione, possiamo selezionare l'ultima versione di passaggio da Jenkins e controllare se rilasciare.
  • La versione risultante dovrebbe includere il numero di versione.
  • Il commit che è stato creato e rilasciato deve essere contrassegnato con il numero di versione.

Qual è la migliore pratica per il rilascio di versioni del prodotto? C'è un processo che soddisferà le mie richieste?

    
posta Amir Rachum 18.07.2014 - 12:12
fonte

1 risposta

6

Abbiamo una situazione simile e ho impostato la nostra procedura di compilazione / rilascio in questo modo:

  • I nostri numeri di versione sono composti da quattro parti (maggiore, minore, compilazione, revisione). Le prime due parti vengono modificate solo dopo un rilascio, le altre due cambiano per ogni build. Nel nostro caso, il maggiore & la versione minore proviene dai parametri di costruzione di Jenkins, il numero di revisione deriva da subversion e la versione di build è il numero di build del lavoro di Jenkins che esegue la build. Potresti anche leggere il testo principale & numero di versione minore da un file nel repository.
  • Jenkins scrive un file che il software utilizza per determinarne il numero di versione.
  • Questo file è archiviato all'interno di Jenkins come artefatto di build, ma è non impegnato nel repository. In questo modo, ogni build ha un numero di versione univoco che può essere recuperato in seguito, ma i numeri di versione non sono tracciati nel repository.

  • Per fare un rilascio, abbiamo un lavoro di Release Jenkins. Questo lavoro in realtà non genera nulla, ma prende come parametro che costruiamo vogliamo rilasciare e tagga il repository alla revisione per quella build e segna la build in Jenkins come una versione (usando la funzione promozioni di build). Il file con le informazioni sulla versione può essere utilizzato per determinare il numero di versione che dovrebbe essere codificato nel nome del tag.

risposta data 18.07.2014 - 13:29
fonte

Leggi altre domande sui tag