Back to Gitlabhq

Jenkins

doc-locale/fr-fr/integration/jenkins.md

19.3.012.1 KB
Original Source

{{< details >}}

  • Édition : Gratuite, GitLab Premium, GitLab Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

{{< history >}}

  • Déplacé vers GitLab Gratuite dans la version 13.7.

{{< /history >}}

Jenkins est un serveur d'automatisation open source qui prend en charge la création, le déploiement et l'automatisation de projets.

Vous devez utiliser une intégration Jenkins avec GitLab dans les cas suivants :

  • Vous prévoyez de migrer votre CI de Jenkins vers GitLab CI/CD à l'avenir, mais avez besoin d'une solution intermédiaire.
  • Vous avez investi dans les plugins Jenkins et choisissez de continuer à utiliser Jenkins pour créer vos applications.

Cette intégration peut déclencher un build Jenkins lorsqu'une modification est poussée vers GitLab.

Vous ne pouvez pas utiliser cette intégration pour déclencher des pipelines GitLab CI/CD depuis Jenkins. Utilisez plutôt le point de terminaison de l'API des déclencheurs de pipeline dans un job Jenkins, authentifié avec un jeton de déclenchement de pipeline.

Une fois l'intégration Jenkins configurée, vous déclenchez un build dans Jenkins lorsque vous poussez du code vers votre dépôt ou créez une merge request dans GitLab. Le statut du pipeline Jenkins s'affiche sur les widgets de la merge request et sur la page d'accueil du projet GitLab.

<i class="fa-youtube-play" aria-hidden="true"></i> Pour une vue d'ensemble de l'intégration Jenkins pour GitLab, consultez Workflow GitLab avec ticket Jira et pipelines Jenkins.

Pour configurer une intégration Jenkins avec GitLab :

  • Accorder à Jenkins l'accès au projet GitLab
  • Configurer le serveur Jenkins
  • Configurer le projet Jenkins
  • Configurer le projet GitLab

Accorder à Jenkins l'accès au projet GitLab {#grant-jenkins-access-to-the-gitlab-project}

  1. Créez un jeton d'accès personnel, un jeton d'accès au projet ou un jeton d'accès de groupe.

  2. Définissez la portée du jeton d'accès personnel sur API.

  3. Copiez la valeur du jeton d'accès personnel pour configurer le serveur Jenkins.

Configurer le serveur Jenkins {#configure-the-jenkins-server}

Installez et configurez le plugin Jenkins pour autoriser la connexion à GitLab.

  1. Sur le serveur Jenkins, sélectionnez Manage Jenkins > Manage Plugins.
  2. Sélectionnez l'onglet Available. Recherchez gitlab-plugin et sélectionnez-le pour l'installer. Consultez la documentation Jenkins GitLab pour d'autres méthodes d'installation du plugin.
  3. Sélectionnez Manage Jenkins > Configure System.
  4. Dans la section GitLab, sélectionnez Enable authentication for '/project' end-point.
  5. Sélectionnez Add, puis choisissez Jenkins Credential Provider.
  6. Sélectionnez GitLab API token comme type de jeton.
  7. Dans API Token, collez la valeur du jeton d'accès que vous avez copiée depuis GitLab et sélectionnez Add.
  8. Saisissez l'URL du serveur GitLab dans GitLab host URL.
  9. Pour tester la connexion, sélectionnez Test Connection.

Pour plus d'informations, consultez Jenkins-to-GitLab authentication.

Configurer le projet Jenkins {#configure-the-jenkins-project}

Configurez le projet Jenkins sur lequel vous souhaitez exécuter votre build.

  1. Sur votre instance Jenkins, sélectionnez New Item.
  2. Saisissez le nom du projet.
  3. Sélectionnez Freestyle ou Pipeline et sélectionnez OK. Vous devez sélectionner un projet freestyle, car le plugin Jenkins met à jour le statut du build sur GitLab. Dans un projet pipeline, vous devez configurer un script pour mettre à jour le statut sur GitLab.
  4. Choisissez votre connexion GitLab dans la liste déroulante.
  5. Sélectionnez Build when a change is pushed to GitLab.
  6. Cochez les cases suivantes :
    • Accepted Merge Request Events
    • Closed Merge Request Events
  7. Spécifiez comment le statut du build est signalé à GitLab :
    • Si vous avez créé un projet freestyle, dans la section Post-build Actions, choisissez Publish build status to GitLab.

    • Si vous avez créé un projet pipeline, vous devez utiliser un script Jenkins Pipeline pour mettre à jour le statut sur GitLab.

      Exemple de script Jenkins Pipeline :

      groovy
      pipeline {
         agent any
      
         stages {
            stage('gitlab') {
               steps {
                  echo 'Notify GitLab'
                  updateGitlabCommitStatus name: 'build', state: 'pending'
                  updateGitlabCommitStatus name: 'build', state: 'success'
               }
            }
         }
      }
      

      Pour plus d'exemples de scripts Jenkins Pipeline, consultez le dépôt du plugin Jenkins GitLab sur GitHub.

Configurer le projet GitLab {#configure-the-gitlab-project}

Configurez l'intégration GitLab avec Jenkins de l'une des façons suivantes.

Avec une URL de serveur Jenkins {#with-a-jenkins-server-url}

Vous devez utiliser cette approche pour les intégrations Jenkins si vous pouvez fournir à GitLab l'URL de votre serveur Jenkins et les informations d'authentification.

  1. Dans la barre supérieure, sélectionnez Rechercher ou accéder à et trouvez votre projet.
  2. Dans la barre latérale gauche, sélectionnez Paramètres > Intégrations.
  3. Sélectionnez Jenkins.
  4. Cochez la case Actif.
  5. Sélectionnez les événements pour lesquels vous souhaitez que GitLab déclenche un build Jenkins :
    • Push
    • Merge request
    • Push de tag
  6. Saisissez l'URL du serveur Jenkins.
  7. Facultatif. Décochez la case Activer la vérification SSL pour désactiver la vérification SSL.
  8. Saisissez le Nom du projet. Le nom du projet doit être compatible avec les URL, où les espaces sont remplacés par des tirets bas. Pour vous assurer que le nom du projet est valide, copiez-le depuis la barre d'adresse de votre navigateur lors de la consultation du projet Jenkins.
  9. Si votre serveur Jenkins requiert une authentification, saisissez le Nom d'utilisateur et le Mot de passe.
  10. Facultatif. Sélectionnez Tester les paramètres.
  11. Sélectionnez Enregistrer les modifications.

Avec un webhook {#with-a-webhook}

Si vous ne pouvez pas fournir à GitLab l'URL de votre serveur Jenkins et les informations d'authentification, vous pouvez configurer un webhook pour intégrer GitLab et Jenkins.

  1. Dans la configuration de votre job Jenkins, dans la section de configuration GitLab, sélectionnez Paramètres avancés.
  2. Sous Jeton secret, sélectionnez Générer.
  3. Copiez le jeton et enregistrez la configuration du job.
  4. Dans GitLab :
  5. Pour tester le webhook, sélectionnez Test.

Dépannage {#troubleshooting}

Erreur : Connection failed. Please check your settings {#error-connection-failed-please-check-your-settings}

Lors de la configuration de GitLab, vous pouvez obtenir une erreur indiquant Connection failed. Please check your settings.

Ce problème a plusieurs causes et solutions possibles :

CauseSolution de contournement
GitLab ne peut pas atteindre votre instance Jenkins à l'adresse indiquée.Pour GitLab Self-Managed, effectuez un ping de l'instance Jenkins au domaine fourni sur l'instance GitLab.
L'instance Jenkins se trouve à une adresse locale et n'est pas incluse dans la liste d'autorisation de l'installation GitLab.Ajoutez l'instance à la liste d'autorisation de l'installation GitLab.
Les identifiants de l'instance Jenkins ne disposent pas d'un accès suffisant ou sont invalides.Accordez aux identifiants un accès suffisant ou créez des identifiants valides.
La case Activer l'authentification pour le point de terminaison /project n'est pas cochée dans votre configuration du plugin JenkinsCochez la case.

Erreur : Could not connect to the CI server {#error-could-not-connect-to-the-ci-server}

Vous pouvez obtenir une erreur indiquant Could not connect to the CI server dans une merge request si GitLab n'a pas reçu de mise à jour du statut du build de la part de Jenkins via l'API Commit Status.

Ce problème survient lorsque Jenkins n'est pas correctement configuré ou qu'une erreur se produit lors du signalement du statut via l'API.

Pour résoudre ce problème :

  1. Configurez le serveur Jenkins pour l'accès à l'API GitLab.
  2. Configurez le projet Jenkins et assurez-vous que, si vous créez un projet freestyle, vous choisissez l'action post-build « Publish build status to GitLab ».

L'événement de merge request ne déclenche pas un pipeline Jenkins {#merge-request-event-does-not-trigger-a-jenkins-pipeline}

Ce problème peut survenir lorsque la requête dépasse la limite de délai d'attente du webhook, définie à 10 secondes par défaut.

Pour ce problème, vérifiez :

  • Les journaux du webhook d'intégration pour les échecs de requêtes.

  • /var/log/gitlab/gitlab-rails/production.log pour des messages tels que :

    plaintext
    WebHook Error => Net::ReadTimeout
    

    ou

    plaintext
    WebHook Error => execution expired
    

Sur GitLab Self-Managed, vous pouvez résoudre ce problème en augmentant la valeur du délai d'attente du webhook.

Activer les job logs dans Jenkins {#enable-job-logs-in-jenkins}

Pour résoudre un problème d'intégration, vous pouvez activer les job logs dans Jenkins afin d'obtenir plus de détails sur vos builds.

Pour activer les job logs dans Jenkins :

  1. Accédez à Dashboard > Manage Jenkins > System Log.
  2. Sélectionnez Add new log recorder.
  3. Saisissez un nom pour l'enregistreur de journaux.
  4. Sur l'écran suivant, sélectionnez Add et saisissez com.dabsquared.gitlabjenkins.
  5. Assurez-vous que le niveau de journal est défini sur All et sélectionnez Save.

Pour consulter vos journaux :

  1. Exécutez un build.
  2. Accédez à Dashboard > Manage Jenkins > System Log.
  3. Sélectionnez votre enregistreur et consultez les journaux.