Plusieurs jenkinsfile dans un référentiel
Nous avons un projet dans un dépôt Github avec plusieurs Jenkinsfiles:
my-project
app
Jenkinsfile
lib1
Jenkinsfile
lib2
Jenkinsfile
Nous avons créé 3 Jenkins pipelines se référant chacune à un Jenkinsfile.
Question: Comment faire pour éviter le déclenchement d'une "application" et "lib1" pipelines quand il y a un nouveau commit dans "lib2"? Nous ne voulons pas passer N emplois chaque fois qu'un commit qui se passe.
J'ai vu que la question est abordée dans https://issues.jenkins-ci.org/browse/JENKINS-43749, mais je n'ai pas trouvé de solution.
Vous devez vous connecter pour publier un commentaire.
RÉCENTE MISE À JOUR:
Plus tard, j'ai résolu ce problème en utilisant extrait de code suivant:
Si vous voyez la commande dir('servicelayer'), à l'aide de ce déplacer dans le répertoire, l'exécution de la commande git à trouver la différence entre les livraisons et d'élever un drapeau. De cette façon, j'ai réussi 3 Jenkins fichiers dans un référentiel unique.
}
VIEILLE RÉPONSE:
Vous pouvez le faire de 2 façons:
a) Configurer votre de favoriser l'emploi par l'ajout de "Comportements Supplémentaires" -> "bureaux de les ignorer s'engage dans certaines région"
Ce comportement vous permettra d'ajouter "dans la liste blanche des régions" ou "liste noire les régions" dont vous ne voulez pas de sondage pour le déclenchement du travail.
b) Écrire un custom shell script pour vérifier les fichiers modifiés pour valider et vérifier l'emplacement. Ce script shell peut ensuite être ajouté à votre Jenkinsfile et Déclarative (ou Script vous pouvez modifier le comportement en conséquence.
Je vous recommande l'option a), car il est plus simple à configurer et à maintenir ainsi. Espérons que cette aide.
Je vous suggère d'utiliser le multi-branche pipeline plugin, puis en spécifiant le chemin d'accès approprié jenkinsfile. Donc, vous avez trois travaux de canalisation, un pour app, lib1, et lib2.
Si tout est sous le même référentiel et sous la même direction jenkins va déclencher tous les emplois dans cette branche lorsqu'une demande d'extraction/la validation est faite. Vous pouvez utiliser multibranch pipeline où chaque branche peut contenir différents Jenkinsfile, afin que les travaux de canalisation sera déclenchée lorsque pull request/commit est créé