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 n'exécute des scripts de construction que lorsque quelqu'un du projet insiste pour le maîtriser. Jusqu'à présent, j'ai été en mesure de le configurer de manière à ce qu'une construction soit déclenchée à tout moment, même si tout le monde le souhaite, mais c'est trop large. Je l'ai fait avec des points d'ancrage de service après réception sur Git.
J'ai lu le wiki Jenkins et quelques tutoriels, mais il manque ce détail particulier ... est-ce que cela a quelque chose à voir avec les sondages? Ou faut-il travailler du côté de Git, de sorte que Git ne déclenche Jenkins que lorsque master
est modifié?
Comme déjà noté par Gezzed dans son commentaire, il existe cependant une bonne solution (décrite dans Polling doit die: déclencher Jenkins construit à 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 un horaire.
Créer un déclencheur post-réception GitHub pour notifier l'URL
http://yourserver/jenkins/git/notifyCommit?url=<URL of the Git repository>?token=<get token from git to build remotely>
Cela déclenchera toutes les générations qui interrogent le référentiel Git spécifié.
Cependant, polling vérifie si quelque chose a été poussé vers la branche utilisée.
Ça fonctionne parfaitement.
À partir de la version 0.5, le plugin GitHub pour Jenkins peut déclencher une construction lorsqu'une modification est transmise à GitHub .
Au lieu de déclencher des constructions à distance, modifiez la configuration de votre projet Jenkins pour déclencher les constructions par interrogation.
Jenkins peut interroger sur une base interne fixe ou sur une URL. Ce dernier est ce que vous voulez ignorer les générations s'il n'y a pas de modifications pour cette branche. Les détails exacts sont dans la documentation . Pour l’essentiel, il vous suffit de cocher l’option "Poll SCM", de laisser la section de planification vierge et de définir une URL distante de manière à atteindre JENKINS_URL/job/name/polling.
Si vous avez un environnement Jenkins sécurisé, contrairement à /build
, l'URL /polling
nécessite une authentification. Les instructions ici ont des détails. Par exemple, j'ai un hook GitHub Post-Receive allant à username:apiToken@JENKIS_URL/job/name/polling
.
Pour GitLab, utilisez ces étapes:
Entrez l'URL "Build Now" de votre projet Jenkins en tant qu'URL d'événement Push:
http://server.com/jenkins/job/project_name/build?delay=0sec
par exemple
Add Web Hook
puis sur test hook
.Ensuite, chaque fois que vous vous engagez dans le référentiel, le raccordement Web est déclenché et une construction est créée. Veillez à définir votre espace de travail Jenkins sur delete workspace before each build
afin d'obtenir une nouvelle copie du nouveau code.
Pas lié à Git, mais ci-dessous, je vais vous aider avec la configuration du travail Jenkins en détail avec Mercurial. Cela peut aider les autres avec un problème similaire.
Poll SCM
. Définissez la valeur sur * * * * *
[URLTrigger] - Poll with a URL
. Vous pouvez maintenant sélectionner certaines options telles que 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 à l'aide de vérifications de test.
Vérifiez que le travail Jenkins s'exécute maintenant en détectant les modifications apportées au SCM. Lorsque la construction est exécutée en raison de modifications apportées à Mercurial, le texte Started by an SCM change
apparaît. Sinon, l'utilisateur qui l'a démarré manuellement.
J'espère que cela vous aidera: Comment déclencher une construction Jenkins sur Git commit
Il suffit d'utiliser curl pour déclencher un travail Jenkins à l'aide des crochets Git fournis par Git.
La commande curl http://localhost:8080/job/someJob/build?delay=0sec
peut exécuter un travail Jenkins, où someJob
représente 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 ça. Chaque fois que vous effectuez une validation, Git déclenchera les commandes de post-validation définies dans le fichier.
Intégration continue avec Jenkins, une fois que le code est poussé dans le référentiel à partir de la commande/interface graphique Git:
.git/hooks
.Le dossier hooks
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:
C:\work\test\\.git\hooks\post-commit
Editez le fichier "post-commit" avec la commande ci-dessous. Assurez-vous qu'il est présent dans votre dossier de crochets de code source local.
curl -u userName:apiToken -X POST http://localhost:8080/jenkins/job/jobName/build?token=apiToken
Exemple:
curl -u admin:f1c55b3a07bb2b69b9dd549e96898384 -X POST http://localhost:8080/jenkins/job/Gitcommittest/build?token=f1c55b3a07bb2b69b9dd549e96898384
5.
userName
: nom d'utilisateur Jenkins
jobName
: Nom du travail de la construction
apiToken
: Pour obtenir votre jeton d'API, allez sur votre page d'utilisateur Jenkins (en haut à droite de l'interface). Il est disponible dans le menu "Configurer" à gauche de la page: "Afficher le jeton de l'API"
Apportez des modifications à votre code source et validez-le dans le référentiel.
Votre travail, http://localhost:8080/jenkins/job/Gitcommittest/
, devrait être construit.
Vous devez spécifier la branche. Par défaut, il écoute n'importe quoi. Voir l'article du blog Hudson: plugins Git et Maven.
Le plugin générique Webhook Trigger peut être configuré avec des filtres pour y parvenir.
Lorsque configuré avec
ref
et une expression $.ref
.$ref
et une expression de filtre du type ^refs/heads/master$
.Ensuite, ce travail sera déclenché pour chaque Push to master
. Pas de vote.
Vous voulez probablement que Webhook utilise plus de valeurs pour effectuer la construction. Ajoutez simplement plus de variables, avec JSONPath, pour choisir ce dont vous avez besoin.
Il existe quelques cas d'utilisation ici: https://github.com/jenkinsci/generic-webhook-trigger-plugin/tree/master/src/test/resources/org/jenkinsci/plugins/gwt/bdd =
Dans mon organisation actuelle, nous ne le faisons pas en maître, mais sur les branches develop et release/(nous utilisons Git Flow), afin de générer des versions d'instantané.
Comme nous utilisons un pipeline multi-branches, nous le faisons dans le fichier Jenkins avec la syntaxe lorsque {} ...
stage {
when {
expression {
branch 'develop'
}
}
}
Ceci est détaillé dans cet article de blog: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/#longer-pipeline
Les réponses ci-dessus sont correctes mais je m'adresse à ceux qui sont novices ici pour leur simplicité
en particulier pour définir le déclencheur de construction du 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 le nouveau projet Pipeline (pour la branche dev)
## 1.Intégration du code avec git-plugin et approche basée sur cron Prérequis Le plugin git doit être installé et configuré avec votre nom et votre adresse e-mail.
## 2. Intégration du code: approche de 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 sinon. considérer la configuration suivante
Configurer le plugin Github avec un compte sur Jenkins
Section GitHub Ajouter un serveur Github si non présent URL de l'API: https://api.github.com Informations d'identification: ajoutez un texte secret (cliquez sur le bouton Ajouter: sélectionnez un type de texte secret) avec la valeur Jeton d'accès personnel (générez-le) depuis vos comptes Github -> paramètres -> paramètres de 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 Cocher la case avec Gérer les crochets Dans la sous-section préalable, il suffit de sélectionner le précédent identifiant pour 'secret partagé'
Ajoutez webhook s'il n'a pas été ajouté à votre référentiel par
Si vous avez un plugin de requêtes Github Pull, configurez-le également avec l'URL publiée Jenkins.
Utilisez le plug-in du générateur de requêtes d'extraction: 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 les constructions.