面接問題: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 の違いも言及できると加点