Настраивал ли ты интеграцию Jenkins с вебхуками из Bitbucket или GitHub для автоматического запуска пайплайнов?

«Настраивал ли ты интеграцию Jenkins с вебхуками из Bitbucket или GitHub для автоматического запуска пайплайнов?» — вопрос из категории CI/CD, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, настраивал. Это стандартный способ автоматизации сборок при пуше в репозиторий. Я использовал плагин GitHub Plugin для GitHub и Bitbucket Branch Source Plugin для Bitbucket.

Типовая настройка для GitHub:

  1. В Jenkins создается Pipeline Job с типом "Pipeline script from SCM".
  2. В настройках джобы в разделе "Build Triggers" активируется "GitHub hook trigger for GITScm polling".
  3. В репозитории GitHub (Settings -> Webhooks) добавляется вебхук с URL: https://<JENKINS_URL>/github-webhook/. Jenkins должен быть доступен из интернета (через ngrok или с публичным IP).

Пример Jenkinsfile, который будет запускаться по вебхуку:

pipeline {
    agent any
    triggers {
        // Эта строка не обязательна при использовании вебхуков, но полезна как fallback
        pollSCM('H/5 * * * *')
    }
    stages {
        stage('Build & Test') {
            steps {
                sh 'mvn clean package'
                sh 'mvn test'
            }
        }
    }
}

Ключевые моменты:

  • Для приватных репозиториев в Jenkins нужно добавить учетные данные (Personal Access Token для GitHub, App Password для Bitbucket).
  • Если Jenkins находится за NAT, можно использовать обратные вебхуки через сервисы вроде Jenkins Notification Plugin или настроить polling SCM как запасной вариант.
  • В Bitbucket Cloud часто проще использовать Bitbucket Pipelines для CI, но интеграция с Jenkins через плагин тоже стабильно работает.