Temps de lecture : 2 minutes

Dans la continuité de notre précédent article : « Création d’une shared library DSL pour jenkins 2 » nous vous présentons aujourd’hui le développement d’une petite DSL très utile.

Quoi de mieux qu’un cas d’usage git ? Qui aujourd’hui n’a jamais eu besoin d’appliquer un release git flow ?

Pour rappel voici le schéma d’une release git flow :

 

 

Décrivons les étapes :

  1. Créer la branche release avec le numéro de version
  2. Effectuer les traitements nécessaires à votre release ( commit, tag etc…)
  3. Merger la branche release/$version sur develop
  4. Merger la branche release/$version sur master
  5. Supprimer la branche release/$version
  6. Envoyer l’ensemble des modifications et les tags

 

Toutes ces étapes peuvent être exécutées par des commandes git hormis l’étape numéro 2 contextuelle au projet. Cette étape sera donc déléguée par une closure.

Nous arrivons donc à la DSL suivante :

def call(Map params) {
    def version = params.version
    sh "git checkout -b release/$version"

    if (params.performReleaseBranch) {
        params.performReleaseBranch(version)
    }

    sh "git checkout develop"
    sh "git merge --ff-only release/$version"
    sh "git checkout master"
    sh "git merge --ff-only release/$version"
    sh "git branch -D release/$version"
    sh "git checkout develop"
    sh "git push --all && git push --tags"
}

Voilà comment l’utiliser dans votre projet Maven :

releaseGitFlow version: versionName, performReleaseBranch : {
    sh "mvn release:prepare"
}

Ou alors de la façon suivante pour un projet Fastlane :

releaseGitFlow version: versionName, performReleaseBranch : {
    sh "bundle exec fastlane release release:true"
}

 

Maintenant à vous de jouer et d’implémenter le code adéquat selon votre type de projet ( gradle, maven, npm, fastlane etc…) dans la closure performReleaseBranch et de l’intégrer au sein de vos pipelines.

Cette nouvelle DSL est disponible dans notre repository « jenkins-shared-libraries-dsl-tutorials » si besoin.