12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【BitriseとGithub Actionsの比較】iOSアプリでCIをやってみた

Last updated at Posted at 2022-01-28

はじめに

参加しているエンジニアコミュニティーで開催された輪読会にてiOSテスト全書を読み、その後同コミュニティーで開催されたBitrise体験会に参加しました。
その際に学んだBitriseの導入部分と、一人体験会で触ってみたGithub Actions(記事を読みながらやっただけ)の簡単な比較をCI素人目線でまとめたいと思います。

CI素人と書きましたが、最近までCIという言葉も知りませんでしたので、

CIとは?
Continuous Integrationの略で、継続的インテグレーションと呼ばれています。
開発者が書いた新しいコードとマスターブランチ(トランク)を頻繁に統合するプロセスです。新しい機能開発のためにブランチを作成する場合、つぎにマージするまでの期間が長くなるにしたがって変更量が多くなり、マージ作業が大変になるだけでなく、問題が含まれるコードの特定と分離が難しくなります。一回のコミットでの変更量を小さくして頻繁にマージすれば、問題の発見が早くなり対処が楽になります。問題発見のオーバーヘッドを小さくするために自動化されたテストを行います。

CI対象

ソース : iOSアプリ(Swift)
管理 : Github(Public)

体験後のざっくり比較

Bitrise

メリット
GUIでポチポチ設定できる
ログが見やすい

デメリット
使い放題ではない
無料プランは 300クレジット/月使える(2クレジット/分 消費してた)

Github Actions

メリット
Githubだけで完結する
Publicリポジトリであれば無料で制限なく使える

デメリット
セットアップが少し大変(ymlファイルを書かないといけない)
ログが見にくい

セットアップ手順

かなりざっくりとですが、BitriseとGithub Actionsのセットアップ手順をまとめておきます。

Bitrise

1. Bitriseアカウント&Workspaceを作成

無料のHobbyプランを選択
スクリーンショット 2022-01-27 20.19.21.png
スクリーンショット 2022-01-27 20.21.18.png

2. PublicなGithubのレポジトリを選択

右上のAdd New App on Web UIから始める
スクリーンショット 2022-01-27 20.23.20.png
スクリーンショット 2022-01-27 20.23.52.png

3. ブランチを指定

スクリーンショット 2022-01-27 20.27.08.png

4. Xcodeのバージョンを指定

Editからデフォルト値が変更可能
スクリーンショット 2022-01-27 20.33.11.png
スクリーンショット 2022-01-27 20.30.04.png

その他は自由に設定(不要ならスキップしてもOK)
スクリーンショット 2022-01-27 20.34.03.png

5. 動かしてみる

Bitrise上でやっても良いし、Githubから指定した動作をして動かしても良い
スクリーンショット 2022-01-28 9.06.33.png

Github Actions

1. GithubのレポジトリからGithub Actionsを始める

検索してiOSを選択しました。
スクリーンショット 2022-01-27 19.11.54.png

2. 自動生成されるymlファイルを修正してコミット

スクリーンショット 2022-01-27 19.14.40.png
自由にカスタマイズできるようですが、まずは動くものという事で、Github Actionsの記事を参考に書いて見ました。〇〇〇〇は対象のソースから取得してください。
(自動生成されたものでも動くような気もしますが、けっこう修正しました)

name: iOS starter workflow

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    name: Build and Test default scheme using any available iPhone simulator
    runs-on: macos-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v2
      - name: Show Xcode version # Xcodeのバージョンを表示
        run: xcodebuild -version
      - uses: actions/cache@v1 # キャッシュを使う
        with:
          path: Pods
          key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-pods-
      - name: CocoaPods
        if: steps.cache-cocoapods.outputs.cache-hit != 'true'
        run: pod install
      - name: Build
        run: xcodebuild
              -workspace 〇〇〇〇.xcworkspace
              -scheme 〇〇〇〇
              -sdk iphonesimulator
              -configuration Debug
              build
      - name: Run tests
        run: xcodebuild
              -workspace 〇〇〇〇.xcworkspace
              -scheme 〇〇〇〇
              -sdk iphonesimulator
              -destination 'platform=iOS Simulator,name=iPhone 11 Pro Max'
              clean test

3. 動かしてみる

下記のような条件にしましたが、自由に変えて対象の動作をすればビルドとテストが動きます。

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

スクリーンショット 2022-01-27 19.51.20.png

感想

Github Actionsのymlを書くところでかなり詰まりました。というか今でも正しい書き方が分かってなく。。。(間違いあればご指摘頂けると嬉しいです)
基本的には、設定が簡単でログも見やすいBitriseを使っていきたいなという思いが強くなりましたが、Github ActionsはGithubだけで完結するが良いので勉強は継続していこうと思ったり。

私が参加させて頂いたBitrise体験会の動画(1時間弱)は、主催者の記事(1番下)から100円で見れます!
今回の記事では導入部分だけですが、体験会ではより高度なことも勉強できました。

体験会参加者の記事も要チェックです。

参考

12
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?