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

42a6a049ac8f5265f31858a9509217fb?s=47 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

42a6a049ac8f5265f31858a9509217fb?s=128

uhooi

September 20, 2020
Tweet

Transcript

  1. GitHub Actions で iOS アプリを CI する 個人的ベストプラクティス 2020.09.20 (Sun)

    14:40 - 15:20 iOSDC Japan 2020 day 1 Track B @the_uhooi
  2. お手元にパソコンをご用意すると、より楽しめます。 HANDS ON https://github.com/uhooi/iOSDC2020-Talk-Sample

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

  4. iOS app developer @uhooi @uhooi @the_uhooi

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

  6. AGENDA GitHub Actions CI 01 02 03 Make

  7. 01 1 CI CI

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

  9. 「CI」とは? ❝ 継続的インテグレーション、 CI(英: continuous integration)とは、 すべての開発者の作業コピーを1日に数回、 共有されたメインラインにマージすることである。 ❞ 引用:

    https://ja.wikipedia.org/wiki/継続的インテグレーション
  10. 「CI」とは? ❝ 継続的インテグレーション、 CI(英: continuous integration)とは、 すべての開発者の作業コピーを1日に数回、 共有されたメインラインにマージすることである。 ❞ 引用:

    https:/ /ja.wikipedia.org/wiki/継続的インテグレーション ?
  11. 「CI」とは?(ウホーイ流) 内の ソースコードに問題がないか、 確認すること リモートリポジトリ こまめに

  12. None
  13. CI のメリット① リモートリポジトリに問題がないことが保証される

  14. CI のメリット② 自動で実行され、手間がかからない

  15. CI のメリット③ 誰かのローカル環境に依存しない

  16. CI のメリット④ 結果をかんたんに確認できる

  17. CI のデメリット CI 環境の構築に学習コストがかかる

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

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

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

  21. CI はアプリの規模や種類にかかわらず
 だいたいおんなじ

  22. パクって
 CI はアプリの規模や種類にかかわらず
 だいたいおんなじ ↓ ウホーイのを 使い回せ!

  23. CI に必要なもの

  24. CI に必要なもの タスク
 ランナー

  25. CI に必要なもの タスク
 ランナー CI
 サービス

  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
  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 →
  28. CI サービス

  29. ウホーイが使っているツール GitHub Actions Make ・タスクランナー: ・CI サービス:

  30. 02 2 Make Make

  31. 「Make」とは?

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

  33. 「Make」とは? ・主に C 言語のコンパイルやリンクに使われるコマンド ・複数の処理をまとめて make ◦◦ として実行できる

  34. 「Make」とは? ・主に C 言語のコンパイルやリンクに使われるコマンド ・複数の処理をまとめて make ◦◦ として実行できる ・初版は 1977

    年(Wikipedia より)
  35. Make のメリット① Makefile のみで済む Makefile

  36. Make のメリット② 広く知られている

  37. Make のデメリット 実は仕様が複雑

  38. ↓ 単純なタスクランナーの使用に限定する Make のデメリット 実は仕様が複雑

  39. タスクの定義方法 .PHONY: foo foo: >...処理1 >...処理2 ...

  40. タスクの定義方法 .PHONY: foo foo: >...処理1 >...処理2 ... $ make foo

  41. 03 3 GitHub Actions GitHub Actions

  42. 「GitHub Actions」とは?

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

  44. 「GitHub Actions」とは? ・GitHub が提供しているプロセス自動化サービス ・2019/11/14 に一般公開された

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

    月 ・超過: $ 0.008 / 分 OS 倍率 Windows 2 Linux 1 macOS 10
  46. GitHub Actions のメリット① GitHub で完結する

  47. GitHub Actions のメリット② GitHub とかんたんに連携できる

  48. GitHub Actions のメリット② GitHub とかんたんに連携できる ・GitHub トークンがデフォルトで変数になっている

  49. GitHub Actions のメリット② GitHub とかんたんに連携できる ・GitHub トークンがデフォルトで変数になっている ・Issue の投稿をきっかけにワークフローを実行する

  50. GitHub Actions のメリット③ すぐに始められる

  51. GitHub Actions のデメリット GitHub を使っていないと使えない

  52. ハンズオン

  53. None
  54. まとめ

  55. まとめ ・CI はいいぞ

  56. まとめ ・CI はいいぞ ・タスクランナーを使うと CI の設定がスッキリする

  57. まとめ ・CI はいいぞ ・タスクランナーを使うと CI の設定がスッキリする ・CI サービスは便利