ぬか床

思考と趣味と、たまにIT。

CI/CD Test Night #5に参加してきました

イベント概要

testnight.connpass.com 当日のtwitterハッシュタグ#cicd_test_night。 イベント開始からしばらくの間、Twitterの障害?でツイートの実況ができない状態でした。。

セッション

1.GitHubにおけるGitHub Actions利用法

話し手:yuichielectric / 田中さん
資料:GitHubにおける GitHub Actions利用法/How GitHub uses GitHub Actions - Speaker Deck
概要:GitHub Actionsのお話。

  • 強み

    • 処理をコンポーネント化(actions)して再利用できる!←これかなりうれしい
    • いろんなイベントをトリガーに設定可能
      • GitHub内のイベントはもちろん、cronの定期実行やHTTP requestにも対応。
  • actionsのマーケットプレイスもある

    • 他の方が作成されたactionsを組み合わせてジョブネット(パイプライン)を簡単に作れてしまう。
    • 実際、GitHubのパッケージリリースも既存のactionsを組み合わせて作っている。

actionsがいろんな人に作られてどんどん増えていくと嬉しい!

  • 今後について
    • 自分の用意したホストでの実行なども対応予定
    • ビルドキャッシュの要望も多かったので、対応予定。

2.シナリオに依存しないテストの基盤作ってます

話し手:Kuniwak / クニワッさん
資料:Speaker DeckのURLが閲覧できなかったため、ツイートにて失礼します。

概要:モバイルゲームの開発におけるCI環境を構築した話。

  • 背景 モバイルゲームのバグを早く見つけたい!が、どうしてあげるとよいのか。
    →プロダクトの特性上、UTはしにくい。。結合テストありきの部分がある。。
    結合テストは壊れやすい。。
    →UIテストは作りこみとかで保守が大変。。
    UIのモンキーテストをしよう!

  • UIのモンキーテストをCIする

    • AppliumやAltUnityTester等のツールはあるが、今回はアプリに埋め込む方式を採用。
    • 環境は実機で行った(横並びで試験するならデバイスクラウド使うのもアリだが)
  • devfarmを開発!

    • 指定したデバイスクラウド/OS/機種/台数/アプリ/引数を設定して、アプリの起動状況を管理するツール
    • 将来的には公開予定

3.Azure PipelinesをサーバサイドのCI/CDに活用

話し手:nakasho / 中島さん
資料:Azure PipelinesをサーバサイドのCI/CDに活用
概要:Azure Pipelineの紹介

  • Azure Pipeline

    • 様々な環境やツールがそろっている。
      • Azure以外にもGCPとかでも動かせちゃう!
    • 初心者はGUIでパイプラインが作れる「Classic Editor」を使うのがおすすめ。
    • ビルドとリリースのPipelineは分割されている。
  • Azure Artifact

    • プライベートパッケージリポジトリ
      • Python等にも対応している。欲しいものは要望をあげよう。

4.AWS CodeBuildを使ったCI環境の構築

話し手:KINOSHITA Minoru / 樹下さん
資料:AWS CodeBuildを使ったCI環境の構築 - Speaker Deck
概要:AWS CodeBuildの事例紹介

  • CIでやったこと

    • LambdaでCodeBuildを複数起動する
    • トリガーはGitHub Webhookを設定する
    • ログをGitHub Checksで管理する
      →メンバーにAWSアカウントを持っていない人がいても、GitHubならみられる!
      →既存のAWSのログは慣れていないと見づらいが、GitHub Checksならわかりやすい!
  • 大変だったこと

    • 前準備に時間がかかった
      • 特にポジトリのセットアップに時間がかかる点。
    • 当初の想定よりコーディングが必要だった

5.expoアプリ開発におけるCI/CD

話し手:mats / 松木さん
資料:expoのおけるCICD.pptx - Google スライド
概要:expo開発の事例紹介

  • expoのつよみ

    • ネイティブアプリ開発におけるツールが豊富 →ネイティブ故のデメリットもある
    • チーム内共有が簡単
    • OTAアップデートによるアプリ配信が可能
      • マーケット登録せずに配信ができる!
  • CIを取り入れた背景

    • パブリッシュしすぎてどれが最新版かわからなくなった
    • 本番用アプリでテストを行いたい
  • やったこと

    • リリースチャンネルの固定、コミット時に自動でパブリッシュ
      →最新版がどれかわかるように!
    • プルリクでDB切り替え
      →アプリ検証をしやすく!

6.開発・保守して初めてわかったBitriseのつらみ

話し手:SatoshiBaba / 馬場さん
資料:開発_保守して初めてわかったBitriseのつらみ - Speaker Deck
概要:BITRISEのつらみ紹介

  • BITRISEとは

    • モバイルアプリに特化したCI/CDサービス
    • 公式サポート有りIntegration、無償プランも有り
    • GitHub以外のリポジトリにも対応
  • つらみポイント

    • WorkFlowがガラパゴス化する
      • 古いものが残ってる
      • iOSAndroidで足並みが揃ってない
        →WorkFlowを設計しよう!
    • ビルドマシンがしょぼい
      →上司におねだりしてプランを上げてもらおう!(CIに時間がかかるのとプランの料金を天秤にかけたら当然ですよね)
    • かゆいところに手が届かない
      →覚悟してスクリプトを書いて対応しよう

7.Kindで量産する使い捨てKubernetes

話し手:チェシャ猫さん
資料:Kind で量産する使い捨て Kubernetes #cicd_test_night / CICD Test Night 5th - Speaker Deck
概要:Kindを使ってKubernetesをCIに乗せる話

  • 背景
    Kubernetesは便利!
    →でも凝りすぎて混沌化する
    現物のKubernetesをCIに乗せたい!

  • Kindを使おう。

    • Kubernetes IN Docker の略。つまりDockerのコンテナ内にKubernetesを入れる!
    • 使い捨てのKubernetesが作れるため、「ビルドごとに名前空間を分ける」「マネジードサービスから払い出す」の両方のうまみを使える。
    • CircleCIとの組み合わせも◎。

個人的な感想

  • 「CI/CD」というテーマでも、環境や使用するツールが発表者の皆様全員バラバラで、全く知らない技術ワードも出てきて非常に面白かった。
    • GitHub Actions
    • expo開発
    • Kind
  • 懇親会では「自社ではなかなかCI導入も大変」という悩みを話されている方がちらほらいらしてた。
    ツールも様々なので、何から手を付けたらよいのかわからない、というのもあるようです。