GitHub ActionsでiOSのプロジェクトをビルドしたい!
CI環境として、GitHub Actionsを使ってみたい!
アプリを開発する時に、以下のようなことを自動化してみたいと思いました。
- プッシュした時に、ビルドやテストを実行する。
- プルリクを出した時に、ビルドやテストに失敗している時はマージできないようにする。
- developブランチにマージされたタイミングで、開発用のipaをビルドする。
- releaseブランチにマージされたタイミングで、デプロイする。
そこでCI環境を使ってみようと思い、今回はGithub Actionsについて、調べてみました。
使い方
1.GitHubのプロジェクトを開き、「Actions」タブを開く。そうすると、以下のような画面が表示される。 右側の「Set up a workflow yourself」を選択する。
2. GitHub actionsで使用するworkflowのymlファイルのテンプレートが表示されます。
ちなみにこのままテストをすると、失敗します。(swift
コマンドが実行されるので、当然ですが、、、)
3.テンプレートのymlファイルを修正する。 とりあえず最低限動くように、以下のように修正しました。 scheme名を自分のプロジェクトのものに変更してもらえれば、そのまま使えると思います。
name: Swift
on: [push]
jobs:
build:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v1
# Select Xcode version
- name: Select Xcode version
run: sudo xcode-select -s '/Applications/Xcode_11.3.app/Contents/Developer'
- name: Show Xcode version
run: xcodebuild -version
# Run build
- name: Build
run: xcodebuild
-scheme Swift-github-actions
-sdk iphonesimulator
-configuration Debug
build
# Run unit test
- name: Run tests
run: xcodebuild
-scheme Swift-github-actions
-sdk iphonesimulator
-destination 'platform=iOS Simulator,name=iPhone 11 Pro Max'
clean test
4. 修正が終わったら、コミットする。「Start commit」からコミットします。
5.「Actions」タブを開き、workflowの実行結果を確認する。きっと成功しているはずです! ちなみにデフォルトではリポジトリへのPushがworkflow実行のトリガーになっています。
Swift Package Manager(SPM)を使ってみる。
上記のworkflowであれば、SPMをインストールしても、そのままビルドとテストが成功するはずです。 以下、SPMでRxSwiftをインストールしてから、Pushしたものです。無事成功しています。
やってみた感想
Bitriseの使用も検証しましたが、普段使っているGithubのサービス内で完結できるのは魅力的かなと思いました。 最低限のworkflowしか記述していないので、今後追加して、最初に書いたようなこともできるようにしたいです。 修正点があれば、ご指摘いただけると。
テストで使用しているリポジトリ
https://github.com/u5-03/Swift-github-actions Publicリポジトリであれば、Github Actionsは無料で使用できるので、検証で使用する場合はPublicリポジトリで!
参考資料
- Github ActionsでiOSアプリのデプロイを自動化する
- Github Actions で Xcode プロジェクトをビルドしてみる
- 署名なしでiOSアプリのビルド&単体テスト〜GitHub Actions編〜