Déclenchement du flux de production sur GitHub push-Pipeline plugin-Multibranch configuration
nous utilisons le plugin pipeline avec la configuration multibranch pour notre CD. Nous avons vérifié dans le fichier Jenkinsfile qui fonctionne hors git.
git url: "$url",credentialsId:'$credentials'
le travail fonctionne bien, mais ne se déclenche pas automatiquement quand un changement est poussé sur github. J'ai mis en place les crochets web GIT correctement.
fait intéressant, quand je vais dans une branche du travail multibranch et que je clique sur "view Configuration", je vois que le "Build quand un changement est poussé sur Github" n'est pas vérifié. Il n'y a aucun moyen de vérifiez-le car je ne peux pas modifier la configuration de la tâche (puisqu'elle prend de parent) et la même option n'est pas présente dans parent.
Toutes les idées de comment résoudre ce problème?
5 réponses
j'ai trouvé un moyen de cocher la case "lorsqu'un changement est poussé vers Github".
Cette ligne a fait l'affaire:
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('H/15 * * * *')])])
je pense que le bureau de vote est nécessaire pour le faire fonctionner. Ce serait bien si aucun sondage n'est nécessaire.
Voici un Jenkinsfile
exemple avec cette implémentation:
#!/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'
}
}
si vous utilisez Stash par exemple, vous pouvez enregistrer un WebHook Post-Receive où vous devez insérer votre formulaire D'URL Jenkins comme : http://jenkinsHost:9090/git/notifyCommit?url=ssh://git@gitHost:1234/test.git
dans votre travail de jenkins, vous devez mettre au moins le déclencheur de construction "Poll SCM". Et fixe l'heure du scrutin à E. g 5 minutes. Cela permet également l'indexation automatique des branches pour votre configuration de projet multibranch.
le fait de recourir au sondage ajoute de la latence - le temps qu'il faut pour qu'une construction commence et termine de rendre un résultat.
il m'a semblé que les plugins de base ont un faible niveau d'abstraction, donc j'ai commuté vers le Github Organisation Folder plugin, qui dépend de chacun d'eux et met en place un crochet d'organisation pour déclencher les constructions de branches et/ou les demandes pull.
Avant de commencer, je tiens à souligner que je n'avais aucune expérience précédente avec Jenkins, donc il pourrait y avoir un tas de meilleures solutions.
Ce que je voulais obtenir en un mot:
- Après chaque pression fait à un Bitbucket repo(test2), sur chaque branche,
de traction et de construire un autre Bitbucket repo(test1), à partir d'une identique
nom de la branche et juste après cela, construisez test2 en utilisant test1 comme
dépendance.
Comment j'ai réussi à atteindre?
- j'ai commencé un nouveau travail avec le type 'Multibranch Pipeline'
- j'ai ajouté le fichier Jenkinsfile suivant à test2:
pipeline {
agent any
stages {
stage('build') {
steps {
dir('test1') {
git branch: BRANCH_NAME, url: 'git@bitbucket.org:user/test1.git', credentialsId: 'credentials_id'
}
sh('build_process')
}
}
}
}
j'ai rencontré le problème que vous ne pouvez pas mettre en place un crochet Bitbucket pour les pipelines
J'ai ajouté Bitbucket Branch Source Plugin à Jenkins
je Bitbucket sélectionné à 'Sources de branche' lors de la mise en place de l'emploi
j'ai ajouté des informations d'identification et mis un crochet pour Auto-inscription webhook
sous "Scan Multibranch Pipeline Triggers" , J'ai mis un crochet à exécuter périodiquement si ce n'est pas le cas, avec un intervalle de 1 min
j'ai ajouté un webhook à mon Bitbucket repo
j'ai mis à jour tous mes plugins, J'ai redémarré Jenkins et il est prêt à aller
autres plugins que j'ai installés: Bitbucket Plugin, Pipeline plugin. Espérons que cela aide pour quelqu'un, j'ai réussi à le résoudre de cette façon après des heures de lutte sans le Plugin Source Bitbucket Branch.
node{
stage('Build and Test') {
properties([pipelineTriggers([[$class: 'GitHubPushTrigger'], pollSCM('* * * * *')])])
checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxx-xxx-xxxx[your credentails Id]', url: 'https://github.com/git']]])
echo 'Build and Test has been done'
}
}