Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Jenkins のつらみを軽減した話
Search
Junki Kaneko
February 21, 2019
Technology
5
2.7k
Jenkins のつらみを軽減した話
Junki Kaneko
February 21, 2019
Tweet
Share
More Decks by Junki Kaneko
See All by Junki Kaneko
DeNA TechCon 2021 - 自動テストのないプロダクトの開発効率化への道
theoden9014
0
200
Welcome_to_Linter
theoden9014
2
18k
Android SDK with Docker
theoden9014
0
5.6k
ReactNativeのテスト紹介
theoden9014
0
1.1k
Other Decks in Technology
See All in Technology
AI導入の理想と現実~コストと浸透〜
oprstchn
0
190
整頓のジレンマとの戦い〜Tidy First?で振り返る事業とキャリアの歩み〜/Fighting the tidiness dilemma〜Business and Career Milestones Reflected on in Tidy First?〜
bitkey
2
15k
ビズリーチが挑む メトリクスを活用した技術的負債の解消 / dev-productivity-con2025
visional_engineering_and_design
3
6.8k
怖くない!はじめてのClaude Code
shinya337
0
380
Delta airlines®️ USA Contact Numbers: Complete 2025 Support Guide
airtravelguide
0
340
面倒な作業はAIにおまかせ。Flutter開発をスマートに効率化
ruideengineer
0
210
PO初心者が考えた ”POらしさ”
nb_rady
0
190
Should Our Project Join the CNCF? (Japanese Recap)
whywaita
PRO
0
330
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
1.6k
MUITにおける開発プロセスモダナイズの取り組みと開発生産性可視化の取り組みについて / Modernize the Development Process and Visualize Development Productivity at MUIT
muit
1
15k
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
160
SmartNewsにおける 1000+ノード規模 K8s基盤 でのコスト最適化 – Spot・Gravitonの大規模導入への挑戦
vsanna2
0
120
Featured
See All Featured
Being A Developer After 40
akosma
90
590k
Side Projects
sachag
455
42k
Faster Mobile Websites
deanohume
307
31k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
RailsConf 2023
tenderlove
30
1.1k
Producing Creativity
orderedlist
PRO
346
40k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
960
Docker and Python
trallard
44
3.5k
Code Reviewing Like a Champion
maltzj
524
40k
Transcript
のつらみを 軽減した話
自己紹介 金子淳貴 株式会社ディー・エヌ・エー - SWET.G - 言語 - Go, Ruby,
Python
アジェンダ • 背景 を使わざるを得ない理由 • のつらいところ • つらいところを改善した話し
背景 を使わざるを得ない理由
背景 社内全体の開発生産性向上と品質向上をミッションとしている横串組織 社内では事業や組織毎に を から作り直しているところが多く、 適切な構築運用を行われていないところが多かった 適切な構築運用を行うための調査、開発、啓蒙を で行った
を使わざるを得ない理由 • ゲームをビルドする場合、ゲームアセットを大量に作る為、 ビルドに非常に長い時間が掛かる ◦ 高いスペックのマシンが複数台必要 • 現状は を提供しているクラウド は速度面などに問題があるので移行でき
ていない
のつらみ
のつらみ • 構築運用に関して ◦ オンプレで構築する場合、構築と運用にコストが掛かる ▪ クラウドサービスを利用しないので当然発生する問題 ◦ 監視や可用性の確保を自分で行う必要がある ▪
で監視したり、 の設定ファイルを定期的にバックアップとったり 色々面 倒くさい ◦ の管理 ▪ 複数の クラスターを管理していると どこに何の が入っているのかわからなくなったり ◦ マシン毎の環境差異を考えなければならない ▪ 別の で成功していたジョブを別の で動かしたら失敗した • 利用に関して ◦ ジョブの管理 ▪ でポチポチしないといけない •
のつらみを改善
のつらみ • 構築運用に関して ◦ 構築と運用にコストがかかる ◦ の管理 ◦ によって環境差異が発生する ◦
監視や可用性 今回は触れません • 利用に関して ◦ ジョブの管理 構築自動化
構築自動化
の構成 Jenkins Master (Linux) 構成 Jenkins Slave (Windows) Jenkins Slave
(Mac) Jenkins Slave (Mac) ・ ・ ・
構築自動化 ノードにマシンパワーは必要ないので、 クラウド上のリソースを利用して に構築している。 • でクラウド上 のインスタンスを管理 • で のセットアップを自動化
構築自動化 はファイルへ指定フォーマットで記載してインストール可能としてお り、それを で実行している。 既存の にインストールされている 一覧を ファイルにダンプすることも可能。 https://github.com/Kuniwak/jenkins-plugin-fixator
構築自動化 を利用して のセットアップを自動化 ノード毎の設定値を で管理。 インストールする のバージョン一覧 インストールする のバージョン アカウント
証明書 プロファイルの情報
の検証基盤 • と を使って クリーンな環境へのインストールを試行可能にして を回している • や は で仮想化して
に変換 詳細は ある エンジニアの開発プロセス改善最前線 の発表資料をご覧ください
環境毎の差異 を利用し、 ノードにインストールされているアプリケーションを自動検知し、 ノードにラベルを自動で割り当て、 ジョブ実行時に利用する を指定できるようにしている https://github.com/jenkinsci/app-detector-plugin 自動割り当て
None
から標準機能の一つとして が入っている。 ユーザーライクな設定 ソースコードと一緒に管理することが可能 の一連の流れを一括管理可能
を ブロックでパイプラインを定義する 単純化された構文を利用する 自由度は低い 簡単に記述することができる を ブロックでパイプラインを定義する 構文で記述することが可能 自由度は高い 自由度が高すぎて可読性が低くなりがち
スレーブの指定。 ステージ毎、もしくはステージ共通で定義できる のワークフローを 毎に定義していく 具体的な動作をここに定義していく ワークフローの終了結果毎に条件分岐して 後処理のハンドリングを行える
環境変数を定義できる credentials()を使うと 認証情報を扱うことができる 実行時のパラメータ を定義できる ステージ内に定義し、 そのステージを実行する条件 を定義できる
処理等を 化し、 複数の で再利用することができる の標準機能。 https://jenkins.io/doc/book/pipeline/shared-libraries/
まとめ • 構築運用に関して ◦ 構築と運用にコストがかかる と で自動化 ◦ の管理 コードで管理できるように
◦ によって環境差異が発生する で自動化 ◦ 監視や可用性 今回は触れません • 利用に関して ◦ ジョブの管理 化してコードで管理
最後に も工夫すれば楽になる! けどクラウド で問題なければクラウド を使った方が良いと思います