Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GitHub ActionsでiOSアプリをCIする個人的ベストプラクティス / iosdc_2020

uhooi
September 20, 2020

GitHub ActionsでiOSアプリをCIする個人的ベストプラクティス / iosdc_2020

iOSDC Japan 2020
Day1 14:40〜 Track B
https://fortee.jp/iosdc-japan-2020/proposal/aff7d899-f92e-4342-ae24-fde1ae4cf799

## 参考リンク

- サンプルリポジトリ
https://github.com/uhooi/iOSDC2020-Talk-Sample

uhooi

September 20, 2020
Tweet

More Decks by uhooi

Other Decks in Programming

Transcript

  1. GitHub Actions で

    iOS アプリを CI する

    個人的ベストプラクティス
    2020.09.20 (Sun) 14:40 - 15:20

    iOSDC Japan 2020 day 1 Track B

    @the_uhooi

    View Slide

  2. お手元にパソコンをご用意すると、より楽しめます。
    HANDS ON
    https://github.com/uhooi/iOSDC2020-Talk-Sample

    View Slide

  3. PAMPHLET
    iOSDCのパンフレットに原稿を掲載していただいています。

    View Slide

  4. iOS app developer
    @uhooi
    @uhooi
    @the_uhooi

    View Slide

  5. オリジナルモンスター図鑑
    累計 100 万 DL (予定) / 主要画面数: 2

    View Slide

  6. AGENDA
    GitHub Actions
    CI
    01
    02
    03
    Make

    View Slide

  7. 01
    1
    CI
    CI

    View Slide

  8. CI が何か知っている人〜?️

    View Slide

  9. 「CI」とは?
    ❝ 継続的インテグレーション、

    CI(英: continuous integration)とは、

    すべての開発者の作業コピーを1日に数回、

    共有されたメインラインにマージすることである。 ❞
    引用: https://ja.wikipedia.org/wiki/継続的インテグレーション

    View Slide

  10. 「CI」とは?
    ❝ 継続的インテグレーション、

    CI(英: continuous integration)とは、

    すべての開発者の作業コピーを1日に数回、

    共有されたメインラインにマージすることである。 ❞
    引用: https:/
    /ja.wikipedia.org/wiki/継続的インテグレーション

    View Slide

  11. 「CI」とは?(ウホーイ流)
    内の

    ソースコードに問題がないか、

    確認すること
    リモートリポジトリ
    こまめに

    View Slide

  12. View Slide

  13. CI のメリット①

    リモートリポジトリに問題がないことが保証される

    View Slide

  14. CI のメリット②

    自動で実行され、手間がかからない

    View Slide

  15. CI のメリット③

    誰かのローカル環境に依存しない

    View Slide

  16. CI のメリット④

    結果をかんたんに確認できる

    View Slide

  17. CI のデメリット

    CI 環境の構築に学習コストがかかる

    View Slide

  18. CI のデメリット

    CI 環境の構築に学習コストがかかる
    ビルドやテストのコマンド実行

    View Slide

  19. CI のデメリット

    CI 環境の構築に学習コストがかかる
    ワークフローの作成
    ビルドやテストのコマンド実行

    View Slide

  20. CI のデメリット

    CI 環境の構築に学習コストがかかる
    CI サービスの選定
    ワークフローの作成
    ビルドやテストのコマンド実行

    View Slide

  21. CI はアプリの規模や種類にかかわらず

    だいたいおんなじ

    View Slide

  22. パクって

    CI はアプリの規模や種類にかかわらず

    だいたいおんなじ



    ウホーイのを
    使い回せ!

    View Slide

  23. CI に必要なもの

    View Slide

  24. CI に必要なもの
    タスク

    ランナー

    View Slide

  25. CI に必要なもの
    タスク

    ランナー
    CI

    サービス

    View Slide

  26. タスクランナー
    $ set -o pipefail && \

    xcodebuild \

    -sdk ${TEST_SDK} \

    -configuration ${TEST_CONFIGURATION} \

    -workspace ${WORKSPACE_NAME} \

    -scheme ${SCHEME_NAME} \

    -destination ${TEST_DESTINATION} \

    -skip-testing:${UI_TESTS_TARGET_NAME} \

    clean test \

    | bundle exec xcpretty --report html

    View Slide

  27. タスクランナー
    $ set -o pipefail && \

    xcodebuild \

    -sdk ${TEST_SDK} \

    -configuration ${TEST_CONFIGURATION} \

    -workspace ${WORKSPACE_NAME} \

    -scheme ${SCHEME_NAME} \

    -destination ${TEST_DESTINATION} \

    -skip-testing:${UI_TESTS_TARGET_NAME} \

    clean test \

    | bundle exec xcpretty --report html
    $ make test

    View Slide

  28. CI サービス

    View Slide

  29. ウホーイが使っているツール
    GitHub Actions
    Make

    ・タスクランナー:
    ・CI サービス:

    View Slide

  30. 02
    2
    Make
    Make

    View Slide

  31. 「Make」とは?

    View Slide

  32. 「Make」とは?
    ・主に C 言語のコンパイルやリンクに使われるコマンド

    View Slide

  33. 「Make」とは?
    ・主に C 言語のコンパイルやリンクに使われるコマンド

    ・複数の処理をまとめて make ○○ として実行できる

    View Slide

  34. 「Make」とは?
    ・主に C 言語のコンパイルやリンクに使われるコマンド

    ・複数の処理をまとめて make ○○ として実行できる

    ・初版は 1977 年(Wikipedia より)

    View Slide

  35. Make のメリット①

    Makefile のみで済む
    Makefile

    View Slide

  36. Make のメリット②

    広く知られている

    View Slide

  37. Make のデメリット

    実は仕様が複雑

    View Slide



  38. 単純なタスクランナーの使用に限定する
    Make のデメリット

    実は仕様が複雑

    View Slide

  39. タスクの定義方法
    .PHONY: foo

    foo:

    >...処理1

    >...処理2

    ...

    View Slide

  40. タスクの定義方法
    .PHONY: foo

    foo:

    >...処理1

    >...処理2

    ...
    $ make foo

    View Slide

  41. 03
    3
    GitHub Actions
    GitHub Actions

    View Slide

  42. 「GitHub Actions」とは?

    View Slide

  43. 「GitHub Actions」とは?
    ・GitHub が提供しているプロセス自動化サービス

    View Slide

  44. 「GitHub Actions」とは?
    ・GitHub が提供しているプロセス自動化サービス

    ・2019/11/14 に一般公開された

    View Slide

  45. GitHub Actions の料金(GitHub Free + Private)
    ・無料: 2,000 分 / 月

    ・超過: $ 0.008 / 分
    OS 倍率
    Windows 2
    Linux 1
    macOS 10

    View Slide

  46. GitHub Actions のメリット①

    GitHub で完結する

    View Slide

  47. GitHub Actions のメリット②

    GitHub とかんたんに連携できる

    View Slide

  48. GitHub Actions のメリット②

    GitHub とかんたんに連携できる
    ・GitHub トークンがデフォルトで変数になっている

    View Slide

  49. GitHub Actions のメリット②

    GitHub とかんたんに連携できる
    ・GitHub トークンがデフォルトで変数になっている

    ・Issue の投稿をきっかけにワークフローを実行する

    View Slide

  50. GitHub Actions のメリット③

    すぐに始められる

    View Slide

  51. GitHub Actions のデメリット

    GitHub を使っていないと使えない

    View Slide

  52. ハンズオン

    View Slide

  53. View Slide

  54. まとめ

    View Slide

  55. まとめ
    ・CI はいいぞ

    View Slide

  56. まとめ
    ・CI はいいぞ

    ・タスクランナーを使うと CI の設定がスッキリする

    View Slide

  57. まとめ
    ・CI はいいぞ

    ・タスクランナーを使うと CI の設定がスッキリする

    ・CI サービスは便利

    View Slide