Nous utilisons le plug-in pipeline avec une configuration multibranche pour notre CD. Nous avons vérifié dans le fichier Jenkins qui fonctionne avec git.
git url: "$url",credentialsId:'$credentials'
Le travail fonctionne bien, mais ne se déclenche pas automatiquement lorsqu'un changement est transmis à github. J'ai correctement configuré les hooks Web GIT.
Fait intéressant, lorsque je vais dans une branche du travail multibranches et que je clique sur "Afficher la configuration", je vois que la "Construction lorsqu’une modification est poussée à Github" est décochée. Il n'y a aucun moyen de le vérifier car je ne peux pas modifier la configuration du travail (car il faut du parent) et la même option n'est pas là dans le parent.
Une idée de comment réparer ça?
J'ai trouvé un moyen de cocher la case "Construire quand un changement est poussé dans Github".
Cette ligne a fait le tour:
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])
Je pense que le sondage est nécessaire pour que cela fonctionne. Serait bien si aucun scrutin n'est nécessaire.
Voici un exemple Jenkinsfile
avec ceci implémenté:
#!/usr/bin/env groovy
node ('master'){
stage('Build and Test') {
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])
checkout scm
env.PATH = "${tool 'Maven 3'}/bin:${env.PATH}"
sh 'mvn clean package'
}
}
Le recours à la scrutation ajoute du temps de latence - le temps nécessaire pour qu'une compilation commence et finisse par donner un résultat.
Il me semblait que les plugins de base avaient un faible niveau d'abstraction. Je suis donc passé au répertoire Github Organization Folder plugin, qui dépend de tous et configure un point d'ancrage pour déclencher les branches et/ou les requêtes d'extraction. .
Si vous utilisez Stash par exemple, vous pouvez enregistrer un WebHook post-réception dans lequel vous devez insérer votre formulaire d'URL Jenkins, comme par exemple: http: // jenkinsHost: 9090/git/notifyCommit? Url = ssh: // git @ gitHost: 1234 /test.git
Dans votre Job Jenkins, vous devez au moins définir le déclencheur de construction "Poll SCM" . Et définir un temps d'interrogation de 5 minutes, par exemple . Ceci active également l'indexation automatique des branches pour la configuration de votre projet multibranch.
Avant de commencer, je voudrais souligner le fait que je n’avais aucune expérience de Jenkins à ce jour, il pourrait donc y avoir un tas de meilleures solutions.
Ce que je voulais réaliser en quelques mots:
Comment j'ai réussi à y parvenir?
pipeline {
agent any
stages {
stage('build') {
steps {
dir('test1') {
git branch: BRANCH_NAME, url: '[email protected]:user/test1.git', credentialsId: 'credentials_id'
}
sh('build_process')
}
}
}
}
Je tombe sur le problème que vous ne pouvez pas configurer un crochet Bitbucket pour les pipelines
J'ai ajouté Bitbucket Branch Source Plugin à Jenkins
J'ai sélectionné Bitbucket dans "Sources de branche" lors de la configuration du travail.
J'ai ajouté des informations d'identification et mis une coche à l'enregistrement automatique webhook
Sous "Analyser les déclencheurs de pipeline multibranches", je coche la case Périodique, sinon sinon, avec un intervalle de 1 min.
J'ai ajouté un webhook à mon dépôt Bitbucket
J'ai mis à jour tous mes plugins, redémarré Jenkins et tout est prêt
Les autres plugins que j'ai installés: Bitbucket Plugin, Pipeline plugin. En espérant que cela aide quelqu'un, j'ai réussi à le résoudre de cette façon après des heures de lutte sans le plugin Bitbucket Branch Source.
Pour les pipelines déclaratifs, essayez ceci:
pipeline {
agent any
triggers {
pollSCM('') //Empty quotes tells it to build on a Push
}
}