10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Swift】fastlaneを使用してリリースまでのステップを自動化する

Last updated at Posted at 2024-06-06

はじめに

リリース作業で時間を取られたり手間がかかっているという問題を解決すべくリリース作業を自動化してみようと思います。導入から実行まで紹介します。

fastlaneとは

iOSやAndroidアプリのビルド、テスト、リリース作業を自動化するためのツールです。

導入方法

1. fastlaneをインストール

今回はHomebrewを使用してインストールします。

brew install fastlane

2.ターミナルで追加対象のプロジェクトのディレクトリに移動し、initを実行します。

cd /xxx_project

fastlane init

3. 質問にいくつか答えます

インストール開始.png

質問:What would you like to use fastlane for?に関して、3のAutomage App Store distributionを選択しました。

インストール完了.png

最後に2枚目の画像が表示されれば完了です。

4. fastlaneファイルが生成されているのを確認します

スクリーンショット 2024-06-06 6.26.35.png
※1 各ファイル構成の詳細をまとめています。

各ファイル構成の詳細

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のリリース作業自動化についても時間があれば挑戦してみたいです。

最後に

私の働いている会社で経験の有無を問わず採用を行っています。
興味のある方は是非カジュアル面談から応募してみてください!

10
9
1

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
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?