Jenkins - Comment créer une branche spécifique

95

Ce n'est pas aussi simple que de faire une construction paramétrée. J'ai déjà un processus de construction spécifique qui sera construit et déployé chaque fois que l'une de ces branches est poussée vers GitHub:

entrez la description de l'image ici

Donc, si je viens de pousser developet que la construction a réussi, comment puis-je déclencher une construction manuelle et la faire tirer feature/my-new-feature(sans faire a git push)? J'ai essayé construire permettant paramétrisé, l' ajout d' une nouvelle chaîne appelée branch, puis en ajoutant une nouvelle spécificateur de branche, */$branch. J'ai ensuite exécuté une construction et mis branchà feature/my-new-featureet il a toujours tiré de develop.

J'apprécierais toute aide!

ffxsam
la source
Parlez-vous de webhook github. cela pourrait résoudre votre problème. voulez-vous déclencher cela depuis github?
Abhijeet Kamble
1
Non, l'intégration GitHub fonctionne déjà. J'ai besoin de savoir comment créer manuellement une branche spécifique.
ffxsam
3
J'ai le même problème. Le travail est configuré pour créer différentes branches et est déclenché par un hook git. Mais lorsque je souhaite créer manuellement une branche spécifique (sans nouveaux changements dans GIT), je clique sur "Construire maintenant" mais il crée toujours la dernière branche extraite. Également essayé diverses propriétés de construction.
cornz
Si votre paramètre est nommé branch, il vous suffit de le spécifier $branchdans le champ de spécification de branche.
Alexey
1
@Alexey, mais pendant la construction automatiquement lancée, cela $branchentraînera une chaîne vide, je suppose.
Nakilon

Réponses:

109

La meilleure solution peut être:

Ajouter un paramètre de chaîne dans le travail existant entrez la description de l'image ici

Puis dans la Source Code Managementsection mise Branches to buildà jour pour utiliser le paramètre de chaîne que vous avez définientrez la description de l'image ici

Si vous voyez une case à cocher intitulée Lightweight checkout , assurez-vous qu'elle n'est pas cochée.

La configuration indiquée dans les images indiquera au travail jenkins d'utiliser mastercomme branche par défaut, et pour les constructions manuelles, il vous demandera d'entrer les détails de la branche (FYI: par défaut, il est défini sur master)entrez la description de l'image ici

De Ranjith
la source
4
Le maître de construction par défaut ne le coupe pas pour une version de développement générique censée créer toutes les branches de développement.
static_rtti
9
Mon dieu, c'est tellement merdique. Pourquoi Jenkins ne conserve-t-il pas la Branches to buildsection avec le foutu repo Git auquel elle s'applique? C'est un PITA stupide d'avoir à faire cela pour spécifier une branche à construire.
Alex Zavatone
9
Dong cela ne fonctionne pas (pour moi). Je me retrouve avec Jenkins essayant de vérifier une branche git.exe fetch --tags --progress origin +refs/heads/${BRANCH}:refs/remotes/origin/${BRANCH} --prunequi est évidemment invalide.
Liam
1
cela est enregistré comme un bogue sur Jenkins , il est donc difficile de voir comment cela a fonctionné?
Liam
19
@Liam Comme suggéré dans le ticket de bogue, vous devez décocher "Lightweight checkout" pour que cela fonctionne.
asmaier
10

Je ne pense pas que vous puissiez tous les deux dans le même travail jenkins, ce que vous devez faire est de configurer un nouveau travail jenkins qui aura accès à votre github pour récupérer les branches, puis vous pourrez choisir celui à construire manuellement.

Marquez-le simplement comme une construction paramétrée, spécifiez un nom et un paramètre configuré comme git parameter

entrez la description de l'image ici

et maintenant vous pouvez configurer les options git:

entrez la description de l'image ici

smohamed
la source
7
Ce paramètre git est un plugin jenkins ?? Je ne vois pas la possibilité d'ajouter ce type de préamètre. S'il s'agit d'un plugin, pouvez-vous le pointer dans la réponse?
Leandro David
@LeandroDavid oui Git Parameter est un plugin qui doit être installé après cela, vous verrez cette option sous Ajouter un paramètre.
gotosachin le
9

Pour extraire la branche via des scripts Jenkins, utilisez:

stage('Checkout SCM') {
    git branch: 'branchName', credentialsId: 'your_credentials', url: "giturlrepo"
}
Igor L.
la source
1
Je sais que ce n'est pas exactement le sujet de la question, mais je cherchais cette information et Google a continué à suggérer ce site comme réponse.
Igor L.
même ici bro. Avez-vous pu trouver la réponse à la réponse exacte
thinkingmonster
0

Ceci est l'extension de la réponse fournie par Ranjith

Je vous suggère de choisir une construction à paramètre de choix et de spécifier les branches que vous souhaitez créer. Paramètre de choix actif

Et après cela, vous pouvez spécifier les branches à construire. Branche à construire

Désormais, lorsque vous construisez votre projet, vous disposez de l'option "Construire avec des paramètres, où vous pouvez choisir la branche à construire"

Vous pouvez également écrire un script groovy pour récupérer toutes vos branches dans le paramètre de choix actif.

Ashish Chandra
la source
Veuillez préciser. TeamCity le fait par défaut, et pourtant Jenkins ne peut même pas nouer ses propres chaussures !!!
C Johnson
0

entrez la description de l'image ici

Il y aura une option dans configure sous Build Triggers

Vérifiez les branches GitHub

Un hook sera créé et vous pourrez ensuite créer n'importe quelle branche que vous aimez à partir de Jenkins lorsque vous sélectionnez Github Branches entrez la description de l'image ici

J'espère que ça aide :)

Rohit Thomas
la source
J'essaie d'utiliser ce plugin avec cette configuration, mais je ne trouve pas de moyen de démarrer le travail. Existe-t-il une manière différente de vérifier si les événements proviennent correctement de gh?
Vito De Tullio
Obtenez-vous l' Run Branch Triggeroption, il scanne git repo pour toutes les branches disponibles ... Aussi, regardez simplement dans jenkins Logs -> sous Manage Jenkins ... pour voir si une erreur s'est produite
rohit thomas
1
Veuillez préciser, votre description est trop petite et trop courte.
C Johnson