web-dev-qa-db-fra.com

Processus de déclenchement sur Github Push - Plugin Pipeline - Configuration multibranches

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? 

23
Punit Agrawal

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'
    }
}
4
Max

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. .

1
giorgiosironi

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.

1
mrkernelpanic

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:

  • Après chaque Push effectué vers un dépôt Bitbucket (test2), sur chaque branche,
    extraire et construire un autre dépôt Bitbucket (test1), à partir d'un
    nom de branche et juste après, compilez test2 en utilisant test1 en tant que
    dépendance.

Comment j'ai réussi à y parvenir?

  • J'ai commencé un nouveau travail avec le type 'Multibranch Pipeline'
  • J'ai ajouté le fichier Jenkins suivant à test2:

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.

0
f4z3k4s

Pour les pipelines déclaratifs, essayez ceci: 

pipeline {
    agent any
    triggers {
        pollSCM('') //Empty quotes tells it to build on a Push
    }
}
0
DarkHark