web-dev-qa-db-fra.com

Comment exclure une branche git de la construction dans Jenkins

Voici ma configuration actuelle de Jenkins pour un projet: 

  • une tâche est exécutée toutes les branches de développement
  • un travail exécute toutes les demandes d'extraction
  • un travail est exécuté seul le maître branche
  • un travail rend la version automatisée uniquement lorsque le maître passe

Cette configuration me permet d’avoir une livraison automatisée en continu ainsi qu’un retour constant pendant le développement. Les 3 premiers travaux exécutent également tous les tests et les rapports de couverture. 

Le problème est que je ne pouvais pas trouver un moyen d'exclure la branche principale du travail "toutes les branches de développement". Il crée inutilement maître deux fois à chaque fois que je fusionne une demande d'extraction.

Est-ce que quelqu'un sait comment exclure une branche du travail à Jenkins?

ps: J'utilise les plugins Git et Github. Mon projet est stocké sur Github.

37
Carneiro

Vous pouvez choisir une stratégie "inverse" pour cibler les branches à créer.

Découvrez la configuration du travail Jenkins,

  • Section "Gestion du code source" (choisissez "Git")
  • Comportements additionnels
  • cliquez sur le bouton "Ajouter"
  • choisissez "Stratégie pour choisir quoi construire"
  • sélectionnez la stratégie "Inverse" dans la liste déroulante.

(N'oubliez pas de renseigner le champ "Branches à construire" par "maître")

Voir aussi l'image de capture d'écran jointe:


enter image description here

59
kyanny

Vous pouvez utiliser :^(?!.*master).*$ comme spécificateur de branche dans Jenkins et toutes les branches sauf la structure principale seront générées. Voir la réponse: https://stackoverflow.com/a/18709097/444639

13
Mike Rylander

Vous pouvez utiliser Repository, filtrer par nom (caractère générique). Ici, il suffit de fournir: ^ (?! .master). $ .  skipmaster1

ou vous pouvez utiliser la branche de filtre en utilisant un caractère générique et exclure le maître là:  skipmaster2 lors de l’analyse réussie mais supprimée ultérieurement de l’analyse du dossier de l’organisation au cas où vous utiliseriez github ou un projet d’équipe bitbucket .  enter image description here

1
hi.nitish

La réponse de @ Mike fonctionnerait pour la plupart, mais notez que :^(?!.*master).*$ correspond à tout ce qui ne contient pas de maître, c'est-à-dire qu'une branche appelée feature/add-remaster-functionality ne sera pas construite également. Une meilleure façon serait :^(?!.*^master$).*$ qui correspond uniquement au maître, ou même :^(?!.*^(master|Origin/master)$).*$ qui correspond au maître ou à l'origine/maître.

0
sashoalm