jenkins によるレポートスクリプト管理
TRANSCRIPT
![Page 1: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/1.jpg)
Jenkins によるレポートスクリプト管理
#TokyoR45
さりんじゃー
@salinger001101
![Page 2: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/2.jpg)
自己紹介• 名前: さりんじゃー• 年齢: 26才
• 最近のお仕事内容• Ruby on Rails で分析結果提示のためのシステム構築。• インフラ環境整備(AWS)。• 激重の R のスクリプトを Python に移植。
都合のいい男 守備範囲がだいぶ広がってきて良い感じ。
〜 2014/03 新潟県の某大学で修士(工学) 取得。
2014/04 〜 2014/12 某ソシャゲで有名なD社でゲーム分析。
2015/01 〜様々なものを対象に(直近は金融等)分析をやろうとしているとこでデータエンジニア。
社会人1年目
![Page 3: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/3.jpg)
みなさん
![Page 4: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/4.jpg)
日々のレポート配信
![Page 5: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/5.jpg)
どうやって実行してますか?
![Page 6: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/6.jpg)
① 手動で実行
![Page 7: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/7.jpg)
レポート出してー
おk
俺
ディレクター
![Page 8: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/8.jpg)
レポート出してー
お…おk
レポート出してー
レポート出してー
他の分析者ディレクター1
ディレクター2
![Page 9: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/9.jpg)
レポート出してー
う…
レポート出してー
レポート出してーレポート出してー
レポート出してー
レポート出してー
レポート出してー
![Page 10: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/10.jpg)
![Page 11: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/11.jpg)
定期的に実行するなら自動化しようよ!
![Page 12: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/12.jpg)
② crontabで実行
![Page 13: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/13.jpg)
crontab とは?
![Page 14: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/14.jpg)
設定した時間に定期的にコマンドを実行してくれる
※ Unix系OSで使えます
![Page 15: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/15.jpg)
こ…これで…
5 0 * 3-5 4 /scripts/01.R
15,30 06 * * 2 /scripts/02.R
00 14 * * */scripts/03.R
0 8 * * */scripts/04.R
0 9 * * */scripts/05.R
0 15 * * */scripts/06.R
0 15 * * */scripts/07.R
crontab ……………… ………………
……………… ……………… ……………… ………………
![Page 16: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/16.jpg)
自動化できた!
![Page 17: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/17.jpg)
だがしかし…
![Page 18: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/18.jpg)
…今日は全休です
◯◯さんがいつも出力してる××レポート出力されてないから確認よろ
ケース1:
![Page 19: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/19.jpg)
ど…どれだ?
ケース1:誰が、何処のサーバーで、どのスクリプトを実行してるか他人にはわからん
今日は全休です
◯◯さんがいつも出力してる××レポート出力されてないから確認よろ
crontab ……………… ……………… ……………… ……………… ………………
crontab ……………… ……………… ………………
report05.R ………………
crontab ……………… ……………… ……………… ……………… ………………
![Page 20: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/20.jpg)
重たいスクリプト実行!
ケース2:
じ…
実行!
![Page 21: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/21.jpg)
重たいスクリプト実行!
ケース2:複数のスクリプトの自動実行タイミング被ってサーバー過負荷で死亡
じ…
実行!
![Page 22: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/22.jpg)
ケース3:
今日のレポート出てないよー?
…あれ?
![Page 23: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/23.jpg)
ケース3:レポート出てなくても気付かない場合がある
今日のレポート出てないよー?
エ…エラーで 死んでる…
Error: Warning:
Fatal:
![Page 24: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/24.jpg)
出す…出すからちょい待って…
あのレポートパラメータちょっと変えてもう1回出してよー急ぎでー
ケース4:いつものと微妙に違う出力を求められる
Date: 2015-01-16, ID: 10010 (いつもの)+Date: 2015-01-14, ID: 10010 (追加)+ Date: 2015-01-16, ID: 10020 (追加)
![Page 25: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/25.jpg)
![Page 26: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/26.jpg)
そこで
の出番
![Page 27: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/27.jpg)
とは?
• 継続的インテグレーションツール• ビルドの自動化• テストの自動化• メトリクスの自動取得 etc.
社内でエンジニアの人がアプリ開発に使ってたりしますよね
![Page 28: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/28.jpg)
とは?
• オープンソースの継続的インテグレーションツール• ビルドの自動化• テストの自動化• メトリクスの自動取得 etc.
実はこれ「すごい crontab」として使える
![Page 29: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/29.jpg)
スクリプトの一元管理
ケース1:誰が、何処のサーバーで、どのスクリプトを実行してるか一目瞭然
• ブラウザから見れるよ!• ジョブのグループ化も簡単だよ!• 権限設定もちゃんと出来るよ!
![Page 30: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/30.jpg)
ジョブのスケジューリング
ケース2:自動実行タイミングをきちんとスケジューリングしてくれる
• アバウトな指定可 (9時ぐらいとか)
batch01 || batch02
• 空いてるサーバで自動実行可能
![Page 31: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/31.jpg)
エラー時の対応
ケース3:エラー時にメールで通知できるのですばやい障害対応が可能に
• スクリプト側でのエラー時処理が楽になります• エラー時に他のスクリプト実行したりも可能
![Page 32: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/32.jpg)
パラメータ付きでも再実行が楽
ケース4:いつもと微妙に違うレポートでも簡単に再出力できる
ここに日付とID入れてボタン押したら
自分で作れるよ
おk自分でやるわ
![Page 33: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/33.jpg)
やばい!
便利かも!
と思ったら?
![Page 34: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/34.jpg)
Jenkins
続きはWebで
![Page 35: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/35.jpg)
まとめ
• 「すごいcrontab」として使えるよ• レポートスクリプトの一元管理• ジョブのスケジューリング• エラー時対応が楽• 再実行も容易
![Page 36: Jenkins によるレポートスクリプト管理](https://reader030.vdocuments.net/reader030/viewer/2022020106/55a93a7a1a28ab41648b4569/html5/thumbnails/36.jpg)
参考資料
• Jenkins 公式,http://jenkins-ci.org
• 日本 Jenkins ユーザー会,http://build-shokunin.org