Studioでサーバサイドエンジニアをしている安里です。2019年5月に開催された社内勉強会のレポートをお届けします。Studioのメンバーである安井さん(@gkuga)に講師をお願いし、ProwというKubernetesベースのCI/CDシステムの勉強会を行いました。勉強会の様子Prowについて勉強会の前半では、こちらの資料をもとにProwの成り立ちや機能、仕組みが説明されました。KubernetesのCI/CDは元々Jenkinsで行なっていましたが、以下のような運用上の課題を抱えており、これらを解決するためにProwが開発されたとのことです。Jenkinsのバージョンを上げる際に全ノードを停止する必要があるGithubと連携するのが難しいスケールアウトが難しいスレーブ接続が切れた後の復旧が手間デバッグの属人化Kubernetesはスケールアウトが容易で、コンテナの自動回復など耐障害性に優れた特性を持ち、スケジュールや設定の管理などCIに必要な機能が既に存在していたことから、Prowのプラットフォームとして採用されたとのことでした。Prowは様々な点でKubernetesの仕組みをうまく利用しているとのことですが、CIのジョブをProwJobというCRDとして定義し、ProwJobを元に作成したPodの実行結果をProwJobのステータス(=ジョブのステータス)として扱う点が特に興味深かったです。形式のコマンド実行が可能とのことです。とコメントするとbugラベルが設定されたり、全てのチェックにパスすると自動でマージしたり、といったことができ、Pluginを追加することで機能の追加も可能になるようです。私がジョインしているプロジェクトでもProwを使っていますが、PRだけでオペレーションができ、その履歴やCIの結果が集約されるためPRだけに集中して快適に開発できています。holdラベルを設定してレビュー指摘に対応後ラベルを外し、レビュアがapproveしたところハンズオン勉強会の後半では、こちらの資料を元にGKEにProwを構築してPRの自動マージを試してみる、というハンズオンを行いました。ハンズオンの最中にTerraformがうまく反映できなかったり、GCPの無料枠が上限を迎えたり、といったトラブルがありましたが、slackで参加者同士アドバイスしあって解決しながら進んでいきました。Prowをデプロイする、プラグインを使ってみる、ジョブを作る、自動マージを試す、という4つのステップがありましたが、私はトラブル対応に時間がかかってしまい1ステップ目のProwをデプロイしたところでタイムアップとなりました。懇親会では寿司やピザが振舞われ、参加者の体験談や色々なCI/CDシステムについての議論などで盛り上がりました。最後になりますが、勉強会を開催して頂いた関係者の方々、および講師の安井さんありがとうございました。OpenSaaS_Studio勉強会ryo_asato2017年中途入社。Studio所属のサーバサイドエンジニアです。課金基盤系のシステムを担当した後、現在は画像配信システムの開発をしています。