Development

L’automatizzazione della gestione delle versioni Jira

Noi di Infobip cerchiamo sempre di automatizzare le attività ripetitive per semplificare il nostro flusso di lavoro, e la gestione della versione del progetto ci offriva una chiara opportunità di farlo.

March 26 2016

Un obiettivo comune di ogni software è automatizzare le attività ripetitive. L'automazione può aumentare la complessità, ma contribuisce a ridurre notevolmente i costi di manutenzione e sviluppo. Probabilmente è proprio questo il principale motivo per cui l'automazione è al centro delle pratiche di software engineering moderne, come il testing, l'integrazionee l'erogazione continua.Il testing continuo si basa sull'automazione dei test, l'integrazione continua sull'automazione del processo di creazione della build e l'erogazione continua sull'automazione dell'intero canale di erogazione del software.

Infobip monitora i cambiamenti dei servizi con la gestione della versione del progetto su JIRA, e utilizza Stash per il controllo della versione. In passato, ogni versione era creata manualmente, di solito appena prima della distribuzione. Si trattava di un'attività ripetitiva, che comprendeva l'ispezione manuale dei salvataggi in fase di controllo della versione, la creazione della versione su JIRA e il collegamento dei problemi alle versioni. L'occasione di automatizzare era quindi chiarissima!

Analisi del flusso di lavoro

 

Per automatizzare il processo è necessario per prima cosa analizzare i passaggi manuali e individuare i modelli comuni. A solo scopo dimostrativo, supponiamo di avere un progetto basato su Java e che il progetto utilizzi Maven. Il log di salvataggio dopo la pubblicazione avrà un aspetto di questo genere:

 

Il primo e l'ultimo salvataggio sono salvataggi di pubblicazione, che contengono il numero di versione. I salvataggi tra le varie pubblicazioni contengono nei loro messaggi delle chiavi di errore (che Stash riporta nella scheda Issues). Se vuole creare una versione su JIRA, l'utente dovrà creare una nuova versione con valore 1.1.0 e collegare gli errori MTP-1, MTP-2 ed MTP-3 alla versione. Il risultato sarà questo:

Tutti i dati necessari a individuare l'evento di pubblicazione, il numero di versione e gli errori della versione sono riportati nei messaggi di salvataggio. La logica del modello può essere estratta in un algoritmo, che al momento del salvataggio agisce come segue:

  1. Se il messaggio di salvataggio non corrisponde al modello di salvataggio della pubblicazione, quest'ultima non viene effettuata.
  2. La versione viene estratta dal messaggio di salvataggio iniziale.
  3. Per ogni salvataggio successivo al primo: a. Se il messaggio di salvataggio non corrisponde alla pubblicazione, il modello di salvataggio viene bloccato b. Le chiavi di errore vengono estratte
  4. Su JIRA viene creata una versione il cui valore corrisponde a quello della versione estratta.
  5. Gli errori estratti vengono collegati alla versione creata.

JIRA version generator

 

JIRA version generator è un plug-in hook gratuito e open source per Stash che utilizza l'API JIRA REST per automatizzare l'algoritmo appena descritto e offre ulteriori funzioni per affinare il processo di automazione.

 

Al momento, per installare il plug-in è necessario scaricare il plug-in JAR da Maven Central è installarlo sull'istanza di Stash. Ci auguriamo che in futuro il plug-in venga messo a disposizione sul marketplace ufficiale Atlassian, così da offrire all'utente un processo di installazione più trasparente.

Dopo l'installazione, il plug-in andrà attivato tramite archivio. Una volta completata l'attivazione, la finestra popup delle impostazioni verrà visualizzata così:

L'unico parametro necessario nelle impostazioni è quello relativo alla chiave di progetto JIRA (la cui chiarezza non richiede ulteriori spiegazioni).

Il parametro di prefisso della versione Jira definisce un prefisso che verrà poi applicato a ogni versione generata su JIRA. Nel caso l'utente abbia un progetto JIRA e diversi artefatti/archivi per quel progetto, può rivelarsi particolarmente utile.

L'ultimo parametro utilizzabile per definire il regex utilizzato per acquisire il modello di salvataggio della versione è il modello di versione del salvataggio della pubblicazione. Il valore predeterminato utilizza il modello standard Maven Release Plugin, supponendo dunque che il nome del progetto corrisponda al nome dell'artefatto.

Conclusioni

 

Ogni volta che comprendi di dedicare del tempo a un'attività semplice e ripetitiva, pensa a come potresti automatizzarla per semplificare il tuo flusso di lavoro e renderlo più immediato.

 

Il generatore di versione JIRA è un esempio di come l'automazione possa essere applicata anche a una piccola parte del processo di sviluppo, e dal momento dell'installazione ha già aiutato diversi team a ridurre parte del lavoro più noioso da completare nei processi di pubblicazione e distribuzione. Alcuni di questi team, infine, non utilizzavano né Maven né Java.

Di Lovro Pandzic - Software Engineer / Team Leader