J'essaie de configurer Jenkins-ci pour un projet utilisant GitHub. J'ai déjà configuré Jenkins avec les plugins appropriés. Je veux que Jenkins exécute des scripts de build uniquement chaque fois que quelqu'un sur le projet pousse à maîtriser. Jusqu'à présent, j'ai pu le configurer pour qu'une génération soit déclenchée à chaque fois que quelqu'un pousse n'importe où, mais c'est trop large. Je l'ai fait avec des hooks de service post-réception sur Git.
J'ai lu le wiki Jenkins et quelques tutoriels, mais ce détail particulier manque ... est-ce quelque chose à voir avec l'interrogation peut-être? Ou faut-il travailler du côté de Git, pour que Git ne déclenche Jenkins que lorsqu'il master
est modifié?
Réponses:
Comme déjà noté par gezzed dans son commentaire, en attendant il y a une bonne solution (décrite dans Polling must die: déclencher les builds Jenkins à partir d'un hook Git ):
Définissez le déclencheur de génération du travail Jenkins sur Poll SCM , mais ne spécifiez pas de planification.
Créer un déclencheur post-réception GitHub pour notifier l'URL
Cela déclenchera toutes les générations qui interrogent le référentiel Git spécifié.
Cependant, l'interrogation vérifie réellement si quelque chose a été poussé vers la branche utilisée.
Cela fonctionne parfaitement.
la source
À partir de la version 0.5, le plugin GitHub pour Jenkins peut déclencher une génération lorsqu'un changement est poussé vers GitHub .
la source
Au lieu de déclencher des builds à distance, modifiez la configuration de votre projet Jenkins pour déclencher des builds par interrogation.
Jenkins peut interroger sur la base d'un interne fixe ou par une URL. Ce dernier est ce que vous voulez ignorer les builds s'il n'y a pas de changements pour cette branche. Les détails exacts sont dans la documentation . Essentiellement, il vous suffit de cocher l'option "Poll SCM", de laisser la section de planification vide et de définir une URL distante pour frapper JENKINS_URL / job / name / polling.
Un problème si vous avez un environnement Jenkins sécurisé est différent
/build
, l'/polling
URL nécessite une authentification. Les instructions ici ont des détails. Par exemple, j'ai un hook GitHub Post-Receiveusername:apiToken@JENKIS_URL/job/name/polling
.la source
Pour GitLab , procédez comme suit:
Saisissez l'URL "Build Now" de votre projet Jenkins comme URL d'événement Push:
http://server.com/jenkins/job/project_name/build?delay=0sec
par exempleAdd Web Hook
puistest hook
Ensuite, chaque fois que vous vous engagez dans le référentiel, le hook Web est déclenché et une génération est créée. Assurez-vous de définir votre espace de travail Jenkins pour
delete workspace before each build
obtenir une nouvelle copie du nouveau code.la source
Pas lié à Git, mais ci-dessous, j'aiderai en détail la configuration du travail Jenkins avec Mercurial. Cela peut aider d'autres personnes ayant un problème similaire.
Poll SCM
option. Définissez la valeur sur* * * * *
[URLTrigger] - Poll with a URL
. Vous pouvez maintenant sélectionner certaines options comme le changement de date de modification, le contenu de l'URL, etc.Monitor change of content
Maintenant, déclenchez des modifications dans le référentiel Mercurial par des tests de vérification.
Vérifiez que le travail Jenkins s'exécute désormais en détectant les modifications SCM. Lorsque la construction est exécutée en raison de modifications de Mercurial, vous verrez alors du texte
Started by an SCM change
. Sinon, l'utilisateur qui l'a démarré manuellement.la source
J'espère que cela aide: Comment déclencher une build Jenkins sur Git commit
Il s'agit simplement d'utiliser curl pour déclencher un travail Jenkins en utilisant les hooks Git fournis par Git.
La commande
curl http://localhost:8080/job/someJob/build?delay=0sec
peut exécuter un travail Jenkins, oùsomeJob
est le nom du travail Jenkins.Recherchez le dossier "hooks" dans votre dossier caché .git. Renommez le fichier "post-commit.sample" en "post-commit". Ouvrez-le avec le Bloc-notes, supprimez la ligne ": Rien" et collez-y la commande ci-dessus.
C'est tout. Chaque fois que vous effectuez un commit, Git déclenchera les commandes post-commit définies dans le fichier.
la source
Intégration continue avec Jenkins, après que le code est poussé vers le référentiel à partir de la commande Git / GUI:
.git/hooks
dossier.Le
hooks
dossier contient les quelques fichiers. Vérifiez le "post-commit". S'il n'est pas présent, créez un fichier, "post-commit" sans extension de fichier:Editez le fichier "post-commit" avec la commande ci-dessous. Assurez-vous qu'il est présent dans votre dossier de hooks de code source local.
Exemple:
5.
userName
: Nom d'utilisateur JenkinsjobName
: Nom du travail de la buildapiToken
: Pour obtenir votre token API, accédez à votre page utilisateur Jenkins (en haut à droite de l'interface). Il est disponible dans le menu "Configurer" à gauche de la page: "Afficher le token API"Apportez des modifications dans votre code source et validez le code dans le référentiel.
Votre travail
http://localhost:8080/jenkins/job/Gitcommittest/
devrait être de construire.la source
Vous devez spécifier la branche. Par défaut, il écoute tout. Voir le billet de blog Hudson: plugins Git et Maven .
la source
Plugin générique de déclenchement Webhook peut être configuré avec des filtres pour y parvenir.
Lorsqu'il est configuré avec
ref
et expression$.ref
.$ref
et une expression de filtre comme^refs/heads/master$
.Ensuite, ce travail se déclenchera pour chaque poussée vers
master
. Pas de sondage.Vous voulez probablement plus de valeurs du webhook pour effectuer réellement la construction. Ajoutez simplement plus de variables, avec JSONPath, pour choisir ce dont vous avez besoin.
Il existe des cas d'utilisation ici: https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd
la source
Dans mon organisation actuelle, nous ne le faisons pas en master mais le faisons à la fois sur le développement et la version / branches (nous utilisons Git Flow), afin de générer des builds de snapshots.
Comme nous utilisons un pipeline multi-branches, nous le faisons dans le fichier Jenkins avec la syntaxe when {} ...
Ceci est détaillé dans cet article de blog: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline
la source
Les réponses ci-dessus sont correctes mais je m'adresse à elles qui sont novices ici pour leur simplicité
en particulier pour définir le déclencheur de génération pour le pipeline:
Considérez que vous avez deux branches Github: 1.master, 2.dev et Jenkinsfile (où le script de pipeline est écrit) et d'autres fichiers sont disponibles sur chaque branche
Configurer un nouveau projet de pipeline (pour la branche dev)
## 1.Intégration de code avec git-plugin et approche basée sur cron Le plugin git préalable doit être installé et configuré avec votre nom et votre adresse e-mail
## 2.Intégration de code: approche github-plugin et webhook Prérequis Le plugin Github doit être installé et le serveur Github doit être configuré, la connexion doit être testée si vous ne pensez pas à suivre la configuration
Configurer le plugin Github avec un compte sur Jenkins
Section GitHub Ajouter un serveur Github s'il n'est pas présent URL de l'API: https://api.github.com Informations d'identification: ajouter du texte secret (cliquez sur le bouton Ajouter: sélectionnez le type de texte secret) avec une valeur Jeton d'accès personnel (Générez-le à partir de vos comptes Github -> paramètres -> paramètre développeur—> jeton d'accès personnel—> ajouter un jeton—> vérifier les étendues—> copier le jeton) Tester la connexion—> Vérifier s'il est connecté à votre compte Github ou non Cochez la case avec la section Gérer les crochets à l'avance, sélectionnez simplement identifiant précédent pour «secret partagé»
Ajoutez le webhook s'il n'est pas ajouté à votre référentiel par
http: // Public_IP: Jenkins_PORT / github-webhook /
Si vous avez le plugin Github Pull requests, configurez-le également avec l'URL Jenkins publiée.
la source
Utilisez le plugin de création de demande de pull: https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
C'est vraiment simple. Vous pouvez ensuite configurer les webhooks GitHub pour déclencher des builds.
la source
Ma solution pour un serveur git local: accédez à votre répertoire de raccordement du serveur git local, ignorez le fichier update.sample existant et créez un nouveau fichier nommé littéralement "mise à jour", tel que:
L'instruction echo sera affichée sous votre résultat git push, le jeton peut être extrait de la configuration de votre travail jenkins, parcourez-le pour le trouver. Si le fichier "update" n'est pas appelé, essayez d'autres fichiers du même nom sans l'extension "sample".
C'est tout ce dont vous avez besoin
la source