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
210
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
Cloud WANの基礎から応用~少しだけDeep Dive~
masakiokuda
3
110
AWS DDoS攻撃防御の最前線
ryutakondo
1
170
リモートワークで心掛けていること 〜AI活用編〜
naoki85
0
180
Engineering Failure-Resilient Systems
infraplumber0
0
120
Amazon S3 Vectorsは大規模ベクトル検索を低コスト化するサーバーレスなベクトルデータベースだ #jawsugsaga / S3 Vectors As A Serverless Vector Database
quiver
2
930
Claude Codeから我々が学ぶべきこと
oikon48
10
2.8k
全員が手を動かす組織へ - 生成AIが変えるTVerの開発現場 / everyone-codes-genai-transforms-tver-development
tohae
0
230
ファッションコーディネートアプリ「WEAR」における、Vertex AI Vector Searchを利用したレコメンド機能の開発・運用で得られたノウハウの紹介
zozotech
PRO
0
570
AIと描く、未来のBacklog 〜プロジェクト管理の次の10年を想像し、創造するセッション〜
hrm_o25
0
110
Segment Anything Modelの最新動向:SAM2とその発展系
tenten0727
0
910
S3 Glacier のデータを Athena からクエリしようとしたらどうなるのか/try-to-query-s3-glacier-from-athena
emiki
0
240
工業高校で学習したとあるエンジニアのキャリアの話
shirayanagiryuji
0
120
Featured
See All Featured
How to Ace a Technical Interview
jacobian
278
23k
Facilitating Awesome Meetings
lara
55
6.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
A designer walks into a library…
pauljervisheath
207
24k
Balancing Empowerment & Direction
lara
2
570
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
Designing Experiences People Love
moore
142
24k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
20k
How STYLIGHT went responsive
nonsquared
100
5.7k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
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/
まとめ • 構築運用に関して ◦ 構築と運用にコストがかかる と で自動化 ◦ の管理 コードで管理できるように
◦ によって環境差異が発生する で自動化 ◦ 監視や可用性 今回は触れません • 利用に関して ◦ ジョブの管理 化してコードで管理
最後に も工夫すれば楽になる! けどクラウド で問題なければクラウド を使った方が良いと思います