chrome://tracing の活用として iutest で使用している CI サービスの並列具合を調べて可視化してみました。
レポート集計の構成
各 CI サービスから並列具合を可視化するために使用したのは、 Intergromat と Google スプレッドシートの2つです。
構成は下図のようになっています。
構成は下図のようになっています。
まず各 CI サービスからはジョブごとに処理の開始・終了時に、Integromat で用意した Webhook URL に情報を送信します。
各 CI サービスで並列化する方法は ci-parallel リポジトリ の YAML を確認してください。
Webhook には「CIサービス名」「commit hash」「名前」「並列番号」「時刻」「開始・終了イベント」などの情報が付与されて来ます。
その情報から、Integromat で Google Drive から CI サービスごとのスプレッドシートを検索し、そこにコミットごとにシートを作成して情報を書き込みます。
そこから Chrome の tracing で表示するための json ファイルに GAS を使って変換しダウンロードします。
あとは、ダウンロードした json ファイルを tracing で読み込めば可視化が完成です。
tracing 用 json への出力
chrome://tracing の json フォーマットはこちらを参考にしました。
また、GAS を使って json ファイルをダウンロードする部分は「【GAS】スプレッドシートからCSVをダウンロードする1クリックボタン/メニューを作成しよう - ポンコツエンジニアのごじゃっぺ開発日記。」を参考に作成しました。
function getData() { var sheet = SpreadsheetApp.getActiveSheet(); var maxRow = sheet.getLastRow();//行数 - var maxColumn = sheet.getLastColumn();//列数 | var keys = []; var ret = []; //1列目のkeyの名前取得 for (var x = 1; x <= maxColumn; x++) { keys.push(sheet.getRange(1, x).getValue()); } var base = 0; //データ for (var y = 2; y <= maxRow; y++) { var json = {}; for (var x = 1; x <= maxColumn; x++) { var k = keys[x-1]; var v = sheet.getRange(y, x).getValue(); if( k == "ts" ) { var d = new Date(v); if( base == 0 ) { base = d.getTime(); } v = (d.getTime() - base) * 1000; } json[k] = v.toString(); } ret.push(json); } //整形してテキストに return JSON.stringify(ret, null, '\t'); }
行のヘッダー名と要素は Integromat で tracing フォーマットに合わせて書き出しているので、ほぼほぼそのまま json にしています。
時間だけ最初のレコードを起点にした差分時間に変換しています。
結果
こんな感じになりました。
詳細は ci-parallel リポジトリを確認してください。
最後に
CI サービスの並列具合を可視化しようと思い、最初は BI ツールを転々と試していたのですが、 tracing がベストマッチでした。
もちろん何をどのように可視化したいかによって、 BI ツールを使うべき場合もありますが、可視化の選択肢として tracing は覚えておいて損はなさそうです。
そして、今回は単純な Duration イベントのみを使いましたが、他のイベントも使うともっといろいろな表現ができそうです。
メモリの追跡はありですね。やってみようかな。
あと、今回はスプレッドシート使いましたが、BigQuery とか使ったほうがイケてるのかな?
この辺今まで触ってこなかったので覚えていきたいですね。
この辺今まで触ってこなかったので覚えていきたいですね。
宣伝
「#技術書典 応援祭」始まりました。
— ずみっくす@あつまれCIサービス (@srz_zumix) March 7, 2020
「あつまれ CI サービス タダではじめる継続的インテグレーション生活」の PDF 版を販売してます。
よろしくお願いします :Dhttps://t.co/igsHDPy9P2
BOOTH でも販売中https://t.co/Ks4GhSE9ib
「技術書典 応援祭」で販売した本には今回調べた並列処理の比較はありませんが、次回作に向けて鋭意活動中です。そちらには収録を予定しています。
「あつまれ CI サービス タダではじめる継続的インテグレーション生活」は現在 BOOTH にて販売中です。
既刊および次回作をよろしくおねがいしますmm
今回は以上です。では。
0 件のコメント:
コメントを投稿