Development

Automatisation de la gestion des versions Jira

Chez Infobip, nous aimons automatiser les tâches répétitives et optimiser notre workflow. La gestion de version de projet était une occasion unique de le faire.

February 19 2016

L'un des objectifs communs des logiciels est d'automatiser les tâches répétitives. L'automatisation peut augmenter la complexité, mais elle peut aussi réduire de manière significative les coûts d'entretien et de développement. C'est la raison pour laquelle l'automatisation est la pierre angulaire des pratiques d'ingénierie logicielle moderne ordinaire telles que les tests, l'intégration et le lancement continus. Les tests continus sont basés sur l'automatisation des tests, l'intégration continue sur l'automatisation du processus de mise en place et le lancement continu sur l'automatisation du processus de lancement du logiciel.

Chez Infobip, nous suivons les modifications avec la gestion de version de projets en JIRA et nous utilisons Stash pour le contrôle de la version. Au début, chaque version était créée manuellement, habituellement juste avant le déploiement. C'était une tâche répétitive qui incluait une inspection manuelle des validations de transaction (commits) au cours du contrôle de la version, créant cette dernière en JIRA et liant les incidents à la version. C'est une occasion unique d'automatisation !

Analyse de votre workflow

Afin d'automatiser ce processus nous devons analyser les étapes manuelles et détecter les structures communes. À des fins de démonstration, supposons que nous avons un projet basé sur Java qui utilise Maven. Le journal de validation, après un lancement peut ressembler à ceci:

La première et la dernière validation sont des validations de version qui contiennent le numéro de la version. Les « commits » entre les validations de lancement de version contiennent les clés de l'incident dans leurs messages (que Stash marque lui-même dans un tableau d'incidents). Un utilisateur qui veut créer une version en JIRA créera une nouvelle version avec la valeur 1.1.0 et les incidents liés MTP-1, MTP-2 et MTP-3 à la version, donneront le résultat suivant:

Toutes les informations nécessaires à la détection de l'événement de lancement, le numéro de la version et les incidents se trouvent dans les messages de la validation. La logique du modèle peut-être extraite en un algorithme, qui:

1. Si le message de validation ne correspond pas au modèle de validation de lancement, ce dernier n'a pas lieu.
2. Extrait la version du message de validation d'origine.
3. Pour chaque validation après celle d'origine fait la chose suivante : a) Si le message de validation ne correspond pas au modèle de validation de lancement, arrête le processus, b) Extrait les clés de l'incident.
4. Créé une version en JIRA avec la valeur de la version extraite.
5. Lie les incidents extraits à la version créée.

Générateur de version JIRA

Le générateur de version JIRA est un plug-in Hook gratuit à installer sur Stash, pour les projets open source qui utilisent l'API JIRA REST pour automatiser l'algorithme décrit précédemment avec quelques fonctionnalités supplémentaires pour ajuster le processus d'automatisation.

Actuellement, pour installer le plug-in vous devez télécharger le fichier JAR sur Maven Central et l'installer dans votre logiciel Stash. Espérons qu'un jour le plug-in soit disponible sur le site officiel Atlassian afin que le processus d'installation soit plus transparent pour l'utilisateur.

Après l'installation, le plug-in doit être activé par référentiel. Après activation, la fenêtre contextuelle de configuration ressemblera à cela:

Le seul paramètre obligatoire est la clé du projet JIRA qui doit être explicite.

Le paramètre du préfixe de la version JIRA définit un préfixe qui sera appliqué à chaque version générée sur JIRA. Ceci peut être pratique si vous avez un projet JIRA et plusieurs artefacts/référentiels pour ce projet.

Lancer le modèle de la version de validation est le dernier paramètre qui peut être utilisé pour définir l'expression régulière (regex) utilisée pour capturer le modèle de validation de la version. La valeur par défaut utilise le modèle standard de plug-in de lancement Maven en supposant que le projet a le même nom que l'artefact.

Conclusion

Chaque fois que vous réalisez que le travail que vous faites est répétitif et simple, étudiez la manière de l'automatiser pour faciliter et rationaliser la charge de travail.

Le générateur de version JIRA est un exemple de la manière de le faire pour une petite partie du processus de développement. Depuis son installation, le générateur de version JIRA a aidé de nombreuses équipes à réduire certaines tâches fastidieuses au cours des processus de lancement et de déploiement, y compris les équipes qui n'utilisent pas Maven ou Java.

Par Lovro Pandzic - Ingénieur logiciel / Chef d'équipe