コンテンツにスキップ

面接問題:GitHubで新しいブランチを作ったらJenkinsのパイプラインは自動トリガーされるか

問題

Suppose there is a pipeline created and I create a new branch in GitHub, will the pipeline be automatically triggered in Jenkins?

解答

デフォルトでは「いいえ」。設定次第で「はい」になる。

解説

Jenkins パイプラインのトリガー方式

1. Webhook トリガー(推奨)

GitHub → Jenkins の Webhook:
  1. GitHub リポジトリの Settings → Webhooks に Jenkins の URL を登録
  2. 「push」「branch creation」などのイベントで Jenkins に通知
  3. Jenkins 側で「GitHub hook trigger for GITScm polling」を有効化

→ 新しいブランチを作成 + push した瞬間にトリガーされる

2. Multibranch Pipeline(全ブランチを自動検知)

// Jenkinsfile(各ブランチのルートに置く)
pipeline {
    agent any
    stages {
        stage('Build') {
            steps { sh 'make build' }
        }
        stage('Test') {
            steps { sh 'make test' }
        }
    }
}
Jenkins の Multibranch Pipeline:
  → リポジトリの全ブランチを定期スキャン
  → Jenkinsfile があるブランチは自動的にパイプラインが作成される
  → 新しいブランチ作成 → スキャン時に自動検知 → パイプライン開始

スキャン間隔: 1分〜定期(またはWebhookで即時スキャン)

3. 特定ブランチのみトリガー

// Jenkinsfile に条件を追加
pipeline {
    agent any
    when {
        anyOf {
            branch 'main'
            branch 'release/*'
            branch 'feature/*'
        }
    }
    stages { ... }
}

GitHub Actions との比較(参考)

# GitHub Actions は on: に書くだけでシンプル
on:
  push:
    branches:
      - '**'          # 全ブランチ
      - 'feature/**'  # feature/ 以下のブランチ
  create:             # ブランチ作成時にもトリガー

面接でのポイント

  • 「デフォルトではトリガーされない」→「Webhook または Multibranch Pipeline で設定する」の流れで答える
  • Multibranch Pipeline は CI/CD の「全ブランチ自動対応」のベストプラクティス
  • GitHub Actions / GitLab CI と Jenkins の違いも言及できると加点