Comment déclencher une commande de Pipeline Jenkins 2.0 à partir d'une demande de pression GitHub

il semble que le GitHubPullRequestBuilder n'est pas compatible avec Jenkins v2.0 emplois dans le secteur des pipelines.

comment configurer une tâche de pipeline pour qu'elle soit déclenchée à partir d'un événement GitHub pull request?

La documentation sur ce sujet est clairsemée et je n'en trouve aucun exemple. Ou est-il préférable de créer un crochet web dans GitHub pour déclencher le travail de pipeline sur L'événement de relations publiques?

19
demandé sur Vadim Kotov 2016-04-25 23:30:56

3 réponses

la façon la plus simple d'utiliser Pipeline avec les requêtes pull GitHub est de mettre le script dans votre dépôt sous le nom Jenkinsfile puis installez le GitHub Direction De La Source plugin. Documentation

1
répondu Jesse Glick 2017-12-12 20:28:50

j'avais le même problème. Voici ce qui a fonctionné pour moi

Pré-requis

  • Jenkins ver. 2+ (j'ai été en utilisant Jenkins 2.60)
  • Github (ou Githhub de l'entreprise) compte
  • votre github et Jenkins doivent pouvoir parler mutuellement.

Github

  1. créer un jeton D'accès personnel (PAT) GitHub avec les droits pertinents.
  2. pour votre repo, créez un webhook avec
    • URL as YourJenkinsURL/github-webhook/
    • Choisissez "Permettez-moi de sélectionner des événements "et cochez" Pull Request’
  3. Ajouter un Jenkinsfile vers le dossier racine de votre repo. Pour le but de test vous pourriez mettre le contenu comme un monde hello de base comme ci-dessous
    pipeline {
        agent any
        stages {
            stage('Test') {
                steps {
                    echo 'Hello World ...'
                }
            }
        }
    }

Jenkins

  1. Installer GitHub Pull Générateur De Requête plugin. (Vous avez également besoin du plugin "Github" mais qui devrait normalement être installé dans le cadre de Jenkins la version 2+)
  2. Jenkins – Lettres De Créance
    • ajouter le jeton D'accès personnel (PAT) de github comme justificatif de ‘texte secret’.
    • ajouter nom d'utilisateur - mot de passe GitHub comme justificatif d'identité "nom d'utilisateur-mot de passe".
  3. Gérer Jenkins-Configurer Le Système
    • serveurs Github – Github: ceci fait partie du plugin GitHub. Ajouter un serveur github. 'API URL' il sera par défaut àhttps://api.github.com. Si vous utilisez enterprise github, remplacez par l'url d'entreprise GitHub suivie de /api/v3. Pour les justificatifs d'identité, sélectionnez L'option PAT. Tester la connexion. "Gérer les Crochets" est cochée.
    • Github Pull Request Builder : pour ‘GitHub Server API URL’ utilisez la même url que celle spécifiée dans la section Github Server. Laissez "secret partagé" vide. Pour les justificatifs d'identité, utilisez les justificatifs "nom d'utilisateur-mot de passe". Tester les références pour s'assurer de son fonctionnement. Dans mes paramètres, "Auto-gérer webhooks" a été cochée.
  4. Travaux De Pipeline
    • créer un nouvel élément en utilisant L'option ‘Pipeline’. Note: C'est le travail de Pipeline de vanille, pas de Pipeline Multibranch.
    • Section Générale: cochez la Case ‘Github du Projet – Projet de URL : Entrez votre dépôt github url
    • Build Triggers: Cochez ' Github Pull Request Builder’
      • pour ‘GitHub API credentials’, sélectionnez l'option que vous avez définie pour GitHub pull request builder dans L'écran ‘Manage Jenkins – Configure System’
      • pour la liste admin: ajouter votre nom d'utilisateur
      • vérifier utiliser des crochets github pour le déclenchement de la construction
    • Pipeline:
      1. sélectionnez 'Pipeline Script from SCM'. Ceci suppose que le dossier racine de votre dépôt contiendra un " Jenkinsfile’
      2. SCM: sélectionnez " Git’
      3. dépôts-entrer le détail des dépôts. Pour les justificatifs d'identité, utilisez les justificatifs d'identité basés sur "Nom d'utilisateur-mot de passe".
      4. cliquez sur Avancé et ajoutez refspec comme +refs/pull/*:refs/remotes/origin/pr/*
      5. Branche devrait être ${sha1}
      6. Chemin du Script: par défaut Jenkinsfile, laisser tel quel.
      7. caisse légère-décochez ceci (https://github.com/jenkinsci/ghprb-plugin/issues/507)

C'est ça. Vous êtes tous ensemble. La création D'une branche de PR sur master de votre repo devrait maintenant déclencher votre projet de Pipeline Jenkins

quelques observations

  • la restitution simultanée de la charge utile webhook d'un PR de github ne déclenche pas le pipeline mais l'ouverture d'un nouveau PR ou même la réouverture d'un PR fermé sur github, déclenche le travail de pipeline
  • dans la Configuration des tâches de Pipeline, si vous choisissez "Pipeline Script" et collez votre pipeline script là-dedans, le travail ne se déclenche pas !!!
21
répondu Deepak Rao 2017-07-16 05:36:29

Le flux en un mot peut aller comme ceci:

  1. vous créez votre pipeline sous forme de code et vous l'enregistrez dans un fichier appelé Jenkinsfile à la racine de votre projet. Ce code devrait décrire comment votre projet sera construit. Voir ici pour des exemples: https://jenkins.io/doc/pipeline/examples/

  2. alors vous devez créer un nouveau" projet de Pipeline Multibranch " article dans votre Jenkins. Vous devez configurer cela de manière à numériser votre rapport de l'étape 1.

  3. maintenant, chaque fois que vous obtenez une nouvelle branche PR ouverte sur votre étape 1 repo, la branche sera cochée et sera construite selon les instructions Jenkinsfile inclus avec elle. Vous pouvez mettre en place plus de conditions sur ce qui est construit et quand si vous voulez.

Notes:

  1. "Multibranch Projet de Gazoduc" exemple de la documentation: https://jenkins.io/doc/book/pipeline-as-code/ (touche de défilement) en bas à Multibranch Projets en cours)

  2. Gardez à l'esprit que l'obtention de l'plugin pour construire un PR après avoir félicité le PR ne fonctionne pas. Il y a une discussion qui analyse ceci ici:https://github.com/jenkinsci/gitlab-plugin/issues/298 Il y a des solutions de rechange (également décrites dans cette discussion) mais elles sont assez confuses à mettre en place.

1
répondu 2017-04-05 14:26:10