
#CircleCIJP 【オンライン】【最強CircleCI利用術編】CircleCI ユーザーコミュニティミートアップ に参加したよ
TL;DR
CircleCIユーザーコミュニティのミートアップに参加したよ、というお話です。
参加してるぜ!#CircleCIJP
— Kosuke ENOMOTO (@coosuke) June 3, 2020
はい。というわけで以下ダイジェストです。
そもそもCircleCIとは何じゃ
すげー平たく言うと、CI(継続的インテグレーション)およびCD(継続的デリバリー)と言われる、ソースコードのビルド〜テスト〜デプロイを自動化するためのプラットフォームになります。
CircleCIユーザーコミュニティについて
日本だと、東京・大阪・福岡など各地にあります。グローバルで提供されているツールなので、当然海外にもコミュニティがあります。
菅田将暉の画面を表示しています#circlecijp
— takachan (@twinuma) June 3, 2020
えっ
発表① 新型コロナウイルス感染症対策サイトのデータ更新をCircleCIで自動化!
まず最初はこちらの方の発表です。
トップバッターは、ヘプタゴンの立花さん! #CircleCIJP pic.twitter.com/Xf9GRRXSw5
— Hideki Ojima @ パラレルマーケター (@hide69oz) June 3, 2020
こちらの会社の代表取締役をされています。
青森版の新型コロナ感染症対策サイトを有志で構築し、データ更新をCircleCIで自動化したよ、という事例です。
発表資料はこちら。
ポイントは大きく2点。
①開発開始から20時間弱でローンチ
すごい。開発開始から20時間足らずでローンチって…
— Kosuke ENOMOTO (@coosuke) June 3, 2020
#CircleCIJP
このスピード感! #CircleCIJP pic.twitter.com/wPCLAxyWmR
— Hideki Ojima @ パラレルマーケター (@hide69oz) June 3, 2020
②青森県から提供されたデータをサイトへ反映する作業を、段階を踏んで自動化
手作業でデータ更新→RSSからデータ抽出して開発者がデータ更新→CircleCIと組み合わせて非開発者でもデータ更新ができるように…
— Kosuke ENOMOTO (@coosuke) June 3, 2020
これを10日で改善したのはすごいなぁ #CircleCIJP
ローンチ当初は、PDFで提供されたデータをインプットに、人力でdata.jsonを作成(手作業でデータ更新)していたのを、PDF配信のRSSからデータ抽出して開発者が手作業でデータ更新→CI/CDをCircleCIに切り替え、非開発者でもデータ更新ができるように→データ配信がPDFからCSVに変更され、データ更新を人手を介さずに自動化する環境を構築されたそうです。
青森は従前からオープンデータ化に積極的だったことで、官民一体となってサイトやデータ更新作業の改善に努めることができたんだろうなぁ。
青森県のオープンデータサイトすごく良い作り... #CircleCIJP https://t.co/i90ggkfLlA
— 𝖸𝗎 𝖴𝗌𝖺𝗆𝗂 (@yusmi) June 3, 2020
現在はソースコードを青森県に譲渡し、県の公式サイトとして運営されているそうです。最初のサイトを構築された有志のグループ「AomoriHackers」の名前は、現在も公式サイトで紹介されているそうです。
県知事からの感謝状は大きいなぁ。でも県職員の方の協力もあったおかげでもある #CircleCIJP
— Kosuke ENOMOTO (@coosuke) June 3, 2020
あはっ。
2ショット! #circlecijp pic.twitter.com/OPmeyQF9d9
— Hideki Ojima @ パラレルマーケター (@hide69oz) June 3, 2020
発表② Kubernetes × CircleCIで実現する安心安全Deploy
次はこちらの方の発表です。
登壇資料はこちら。
まずはCI/CDってなんだっけ、というお話から始まりました。これ大事なのでキャプチャ貼ります。
次に、安全安心のデプロイとは何かについて。以下3つのお話でした。資料を読んでいただいたほうがわかりみが深いので、詳細は割愛。
1. 開発者なら誰でもデプロイまでできる
2. 人間が頑張らずにデプロイまでできる
3. Stagingでテストされた環境が(そのまま)Productionにデプロイされる
まとめです。こちらはキャプチャしました。
ちなみに、Pipeline上でProductionリリースを承認するタスクは、ちょっと前まではCircleCIのGUI上でしかできなかったのが、ApproveジョブがAPI提供開始されたので、Slack上からApproveする、というようなオペレーションができるようになりました(歓喜)。
最近リリースされたjobをApproveするためのAPIです〜https://t.co/s5HtO7mbCw
— Taka@英語がんばるマン (@ganezasan) June 3, 2020
#CircleCIJP
今までstagingとproductionデプロイを分けて考えたけど、production手前でapprove噛ませてstaging -> approve -> productionってすれば、1本でいけるのか
— エンドレ (@verde_dre) June 3, 2020
環境差分出ないのは最高にありがたい#CircleCIJP
発表③ CircleCIのサポートが実践するCircleCIビルドのデバック方法
最後はCircleCIの中の人の発表です。
どうでも良いけど、マクラでスタンディングデスクの紹介があったので、ちょろっとだけ欲しくなったのはここだけの話です。
スタンディングデスク、買おう… #CircleCIJP
— Kosuke ENOMOTO (@coosuke) June 3, 2020
まぁまぁよくある、ビルドが途中で止まっちまう問題の対処法について、発表していただきました。
止まっちゃったその①:何もしていないのにビルドが止まる
→Docker Imageのshaを確認せよ
CircleCIが用意しているDocker Imageは各言語やMWが提供している
Dockerfileをインポートしているそうです。
よりキャッシュ効率化と安定性を考慮したcimg/xxxxを提供
これにより、外部のDockerfileへの依存を排除
止まっちゃったその②:時々ビルドが失敗する
→エラーコードが137であれば、OOM(OutOfMemory)を疑え
JVM編と、Node.js編に分けて紹介いただきました。
まぁでも、気をつけるべきはJVMのヒープサイズですね。
止まっちゃったその③:commitしたのにビルドが開始されない
→GitからCircleCIへのWebhook通信を確認せよ
これはそもそもCircleCIの内部の動きを把握したほうが良い、
というわけで以下の動画を御覧ください。
止まっちゃったその④:直近のジョブが見えない
→CircleCIのステータスを確認せよ
ここで僕はなぜかZoomが落ちたので離脱…。
まとめ
とても勉強になりました。CI/CDはまさに環境構築しようとしているところだったので、良いインプットに恵まれました。神。というわけでアウトプットするまでが勉強会ということで、以上が私のアウトプットになります。ご査収ください。