95 votes

Comment déclencher une génération uniquement si des modifications se produisent sur un ensemble particulier de fichiers

Comment puis-je dire à Jenkins/Hudson de déclencher une compilation uniquement pour les modifications apportées à un projet particulier dans mon arbre Git ?

7voto

FrankerZ Points 15484

Bien que cela n'affecte pas les tâches individuelles, vous pouvez utiliser ce script pour ignorer certaines étapes si le dernier commit ne contenait aucune modification :

 /*
 * Check a folder if changed in the latest commit.
 * Returns true if changed, or false if no changes.
 */
def checkFolderForDiffs(path) {
    try {
        // git diff will return 1 for changes (failure) which is caught in catch, or
        // 0 meaning no changes 
        sh "git diff --quiet --exit-code HEAD~1..HEAD ${path}"
        return false
    } catch (err) {
        return true
    }
}

if ( checkFolderForDiffs('api/') ) {
    //API folder changed, run steps here
}

2voto

Uri Cohen Points 1417

Si la logique de choix des fichiers n'est pas triviale, je déclencherais l'exécution du script à chaque modification, puis écrirais un script pour vérifier si une construction est effectivement requise, puis déclencher une construction si c'est le cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X