はじめに
リリース作業で時間を取られたり手間がかかっているという問題を解決すべくリリース作業を自動化してみようと思います。導入から実行まで紹介します。
fastlaneとは
iOSやAndroidアプリのビルド、テスト、リリース作業を自動化するためのツールです。
導入方法
1. fastlaneをインストール
今回はHomebrewを使用してインストールします。
brew install fastlane
2.ターミナルで追加対象のプロジェクトのディレクトリに移動し、initを実行します。
cd /xxx_project
fastlane init
3. 質問にいくつか答えます
質問:What would you like to use fastlane for?に関して、3のAutomage App Store distributionを選択しました。
最後に2枚目の画像が表示されれば完了です。
4. fastlaneファイルが生成されているのを確認します
各ファイル構成の詳細
Appfile
Fastlaneの基本設定を定義するファイル。アプリのバンドルIDやApple ID、チームIDなどの情報が含まれます。
Deliverfile
deliver
ツールを使用するための設定ファイル。メタデータやスクリーンショットを含むアプリ情報をApp Store Connectにアップロードするために使用されます。
Fastfile
Fastlaneのメイン設定ファイルで、各種レーン(lane)を定義します。各レーンには、ビルド、テスト、デプロイなどのアクションが含まれます。
metadata
アプリのメタデータ(アプリの名前、説明、リリースノートなど)を格納するフォルダ。このフォルダ内のファイルは、deliver
ツールによってApp Store Connectにアップロードされます。
screenshots
アプリのスクリーンショットを格納するフォルダ。このフォルダ内のスクリーンショットもdeliver
ツールによってApp Store Connectにアップロードされます。
実行方法
1. 対象のプロジェクトのリポジトリへ移動しコマンドを実行
今回はrelease
コマンドを実行します。するとFastfileに記載されているreleaseレーンが実行されます。ビルド番号がインクリメント、アプリがビルド、App Store Connectにアーカイブをアップロードする作業が行われます。
cd /xxx_project
fastlane release
// Fastfile
platform :ios do
desc "Push a new release build to the App Store"
// レーン指定
lane :release do
increment_build_number(xcodeproj: "xxx.xcodeproj")
build_app(workspace: "xxx.xcworkspace", scheme: "xxx")
upload_to_app_store
end
end
GitHub Actionsを使ってみる
今回はfastlaneのみでリリース作業を自動化でしたが、GitHub上でリリースブランチのPushを検知して、自動でアーカイブをアップロードする処理をまとめてみます。GitHub Actions を使用してのリリースはまだ試していませんがまとめてみました
導入方法
1. GitHubリポジトリの設定
GitHubリポジトリのルートに.githubディレクトリを作成し、その中にworkflowsディレクトリを作成します。
2.GitHub Actionsワークフローファイルの作成
.github/workflows/release.ymlという名前で新しいワークフローファイルを作成します。以下はその内容です。
YAMLファイルの導入に関しては下記記事が参考にしてください。
name: Release iOS App
on:
push:
branches:
- release/*
jobs:
build:
runs-on: macos-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
- name: Install dependencies
run: |
gem install bundler
bundle install
- name: Install fastlane
run: |
gem install fastlane
- name: Build and release
run: |
bundle exec fastlane release
env:
APP_STORE_CONNECT_API_KEY_PATH: ${{ secrets.APP_STORE_CONNECT_API_KEY_PATH }}
APP_STORE_CONNECT_API_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ID }}
APPLE_ID: ${{ secrets.APPLE_ID }}
TEAM_ID: ${{ secrets.TEAM_ID }}
これにより、GitHub Actionsがこれらの情報を使用してApp Store Connectに接続し、リリースブランチにプッシュされたタイミングでFastlaneを使用したリリース作業が自動的に実行されます。
まとめ
今回はiOSでしたがAndroidのリリース作業自動化についても時間があれば挑戦してみたいです。
最後に
私の働いている会社で経験の有無を問わず採用を行っています。
興味のある方は是非カジュアル面談から応募してみてください!