SlideShare a Scribd company logo
Multibranch Pipelineで
いろいろ学んだこと
リクルートライフスタイル
R-SET 関根 康史
自己紹介
● 関根 康史 ( @AHA_oretama )
● リクルートライフスタイル
○ 2015/8 〜
● ブッキングテーブル開発統括 → R-SET活動中
SET = Software Engineer in Test
R-SET = Recruit Lifestyle’s SET
Multibranch Pipeline
● Jenkins 2系で推奨インストール入り
● 変更があったブランチやプルリクエストを自動でビルドする
Webhook設定を忘れがち
● 変更があったら自動でビルドする、と言ったが、
その契機はGitHubのWebHook
● GitHub Setting -> Webhooks で設定
URL:http://<Name of Jenkins server>:8080/github-webhook/
● 残念ながらMultiBranchジョブを作成したら
自動では設定されるわけではない。手動で設定する必要がある
GitHub設定を理解する
(下2つのfork版も存在)
Build origin branches ?
Build origin branches also filed as PRs ?
Build origin PRs (merged with base
branch)
?
Build origin PRs (unmerged head) ?
GitHub設定を理解する
(下2つのfork版も存在)
Build origin branches ブランチに変更があった場合にビルドする
Build origin branches also filed as PRs PRされているブランチに対してビルドする
Build origin PRs (merged with base
branch)
マージ先とマージしてからPRをビルドする。
マージ先に変更があってもビルドする。
Conflictするとコケる。
(PRにコメントする場合に利用)
Build origin PRs (unmerged head) PRをビルドする。
(PRにコメントする場合に利用)
Build origin PRsのJenkinsfileの扱いについて
Build origin PRs (merged with base
branch)
プルリクエスト先にJenkinsfileがある場合に
ビルドされる
Build origin PRs (unmerged head) プルリクエスト元にJenkinsfileがある場合に
ビルドされる
ブランチの設定箇所
GUI? or Pipeline?
#!groovy
pipeline {
...
when {
branch 'develop'
}
}
ブランチの設定箇所
GUI? or Pipeline? ⇒ 条件によって使い分け+併用が望ましい
GUI Pipeline
ブランチの正規表現が豊富。
include/excludeのみ
変更容易性が高いが、
ジョブが増えて可視性が低い。
複合条件も可能。
ジョブの対象が
変わらない場合はGUIがベター
ex.
develop -> 更新があればビルド
ジョブの対象が頻繁に
変わる場合にはPipelineがベター
ex.
feature/AAA -> BBB環境へリリース
Multibranch Pipeline ver.1.4まで
Jenkinsfileは1つのみ、固定パス (./Jenkinsfile)
● when文を多用して、1ファイルに処理をいくつも書く。
→ 処理の複雑化
● プルリクエストに対するコメント処理を同時に複数実行(Parallelの使用)
→ stash/unstashでソースファイルを受け渡し
→ .gitファイルがないため、gitが必要な処理が動かない…
Jenkinsfileでパス指定可能に
JENKINS-34561の対応により、ver.1.5よりパスを指定可能
→ ジョブを複数作ることで、ジョブごとにJenkinsfileを分けれる
パス指定での複数ジョブの弊害
● プルリクエストで行う処理をジョブ(Jenkinsfile)を分けることで並列化
○ テスト
○ SonarQube
○ Lint
○ …
● しかし、GitHubへのステータスはすべてのジョブで共有
最後のものでステータスは上書きされる
1. SonarQube失敗 -> GitHub異常
2. テスト成功 -> GitHub正常
⇒ 最終GitHubステータス = 正常
MultibranchどころかPipeline知らない問題
● どうすればいいか模索中
構想中
JOB

More Related Content

PDF
Multibranch pipelineでいろいろ学んだこと
PDF
MagicOnion入門
PDF
”30分”ぐらいでわかる「Kubernetes」について
PDF
オンラインゲームの仕組みと工夫
PDF
超実践 Cloud Spanner 設計講座
PDF
OpenStack超入門シリーズ Novaのディスク周りあれこれ
PDF
例外設計における大罪
PDF
こわくない Git
Multibranch pipelineでいろいろ学んだこと
MagicOnion入門
”30分”ぐらいでわかる「Kubernetes」について
オンラインゲームの仕組みと工夫
超実践 Cloud Spanner 設計講座
OpenStack超入門シリーズ Novaのディスク周りあれこれ
例外設計における大罪
こわくない Git

What's hot (20)

PPTX
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
PPTX
本当は恐ろしい分散システムの話
PDF
Monix Taskが便利だという話
PDF
Dockerからcontainerdへの移行
PDF
20分でわかるgVisor入門
PDF
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
PDF
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
PDF
Ansibleはじめよぉ -Infrastructure as Codeを理解-
PDF
インタフェース完全に理解した
PDF
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
PPTX
イベント・ソーシングを知る
PDF
CTF for ビギナーズ ネットワーク講習資料
PDF
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
PDF
いつやるの?Git入門 v1.1.0
PPTX
トランザクションの設計と進化
PDF
Steam ゲーム内購入 サーバーサイド実装について
PDF
ドメイン駆動設計サンプルコードの徹底解説
PPTX
分散システムについて語らせてくれ
PDF
DataGridを自前実装する話
PDF
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Apache Spark on Kubernetes入門(Open Source Conference 2021 Online Hiroshima 発表資料)
本当は恐ろしい分散システムの話
Monix Taskが便利だという話
Dockerからcontainerdへの移行
20分でわかるgVisor入門
[CEDEC 2021] 運用中タイトルでも怖くない! 『メルクストーリア』におけるハイパフォーマンス・ローコストなリアルタイム通信技術の導入事例
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
Ansibleはじめよぉ -Infrastructure as Codeを理解-
インタフェース完全に理解した
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
イベント・ソーシングを知る
CTF for ビギナーズ ネットワーク講習資料
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
いつやるの?Git入門 v1.1.0
トランザクションの設計と進化
Steam ゲーム内購入 サーバーサイド実装について
ドメイン駆動設計サンプルコードの徹底解説
分散システムについて語らせてくれ
DataGridを自前実装する話
PFN のオンプレML基盤の取り組み / オンプレML基盤 on Kubernetes 〜PFN、ヤフー〜
Ad

Viewers also liked (20)

PDF
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
PPTX
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
PDF
Java SE 9の紹介: モジュール・システムを中心に
PDF
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
PDF
Java9を迎えた今こそ!Java本格(再)入門
PDF
JJUG初心者のためのJava/JJUG講座
PDF
継続的インテグレーションの過去・現在・そして未来 〜ヌーラボの事例と共に考える〜
PDF
SETとして活動しはじめた話
PDF
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
PPTX
マルチクラウドデータ連携Javaアプリケーションの作り方
PDF
Graph Algorithms Part 1
PDF
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
PDF
Open Liberty: オープンソースになったWebSphere Liberty
PPTX
Javaアプリケーションの モダナイゼーションアプローチ
PDF
ITトレンドに見る日本のエンタープライズITについて
PDF
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
PDF
JVM上で動くPython処理系実装のススメ
PPTX
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
PDF
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
PPTX
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
劇的改善 Ci4時間から5分へ〜私がやった10のこと〜
Dockerで始める Java EE アプリケーション開発 for JJUG CCC 2017
Java SE 9の紹介: モジュール・システムを中心に
ユニットテストのアサーション 流れるようなインターフェースのAssertJを添えて 入門者仕立て
Java9を迎えた今こそ!Java本格(再)入門
JJUG初心者のためのJava/JJUG講座
継続的インテグレーションの過去・現在・そして未来 〜ヌーラボの事例と共に考える〜
SETとして活動しはじめた話
自動化を支えるCI/CDツールの私の選択 ~何をするためにCI/CDツールを選ぶか~
マルチクラウドデータ連携Javaアプリケーションの作り方
Graph Algorithms Part 1
Business Process Modeling in Goldman Sachs @ JJUG CCC Fall 2017
Open Liberty: オープンソースになったWebSphere Liberty
Javaアプリケーションの モダナイゼーションアプローチ
ITトレンドに見る日本のエンタープライズITについて
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
JVM上で動くPython処理系実装のススメ
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
AI and Machine Learning Demystified by Carol Smith at Midwest UX 2017
Ad

Similar to Multibranch pipelineでいろいろ学んだこと (7)

PPTX
Multibranch Pipeline with Docker 入門編
KEY
Git (運用編)
PDF
Git flowについてまとめてみた
PDF
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
PDF
git ~start PullRequest~
PPTX
Git勉強会
Multibranch Pipeline with Docker 入門編
Git (運用編)
Git flowについてまとめてみた
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
git ~start PullRequest~
Git勉強会

Multibranch pipelineでいろいろ学んだこと