Slide 1

Slide 1 text

GitHub Actions で iOS アプリを CI する 個人的ベストプラクティス 2020.09.20 (Sun) 14:40 - 15:20 iOSDC Japan 2020 day 1 Track B @the_uhooi

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

iOS app developer @uhooi @uhooi @the_uhooi

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

AGENDA GitHub Actions CI 01 02 03 Make

Slide 7

Slide 7 text

01 1 CI CI

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

「CI」とは?(ウホーイ流) 内の ソースコードに問題がないか、 確認すること リモートリポジトリ こまめに

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

CI に必要なもの

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

タスクランナー $ 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

Slide 27

Slide 27 text

タスクランナー $ 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 →

Slide 28

Slide 28 text

CI サービス

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

02 2 Make Make

Slide 31

Slide 31 text

「Make」とは?

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

Make のメリット① Makefile のみで済む Makefile

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

03 3 GitHub Actions GitHub Actions

Slide 42

Slide 42 text

「GitHub Actions」とは?

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

GitHub Actions の料金(GitHub Free + Private) ・無料: 2,000 分 / 月 ・超過: $ 0.008 / 分 OS 倍率 Windows 2 Linux 1 macOS 10

Slide 46

Slide 46 text

GitHub Actions のメリット① GitHub で完結する

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

ハンズオン

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

まとめ

Slide 55

Slide 55 text

まとめ ・CI はいいぞ

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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