目次
概要
以前のブログポストではGitHub Actions
を使ってFlutterプロジェクトのコードを静的分析して、テストコードを実行する方法について説明しました。
また、FlutterプロジェクトにFastlane
を設定してFlutterアプリをAndroidとiOSのアプリストアへ自動でデプロイする方法についても説明しました。
このブログポストではGitHub Actions
でFastlane
を実行してFlutterで開発したアプリをデプロイする方法について説明します。
デプロイのためGitHub Actionsファイル
Flutterで開発したアプリをiOSとAndroidのアプリストアへデプロイするためGitHub Actions
ファイルを生成してみましょう。GitHub Actions
ファイルを作るためFlutterプロジェクトフォルダ中に./.github/workflows/main.yml
ファイルを生成して次のように修正します。
name: Deploy iOS and Android App to App Store and Play Store
on:
push:
tags:
- 'v*'
このGitHub Actions
はGitのタグにv
で始まるタグ(v1.2.3
)が追加された時、実行されるように設定しました。
これからiOS
とAndroid
のためGitHub Actions
を追加してFlutterで開発したアプリをデプロイする方法についてみてみましょう。
iOSのためFastlaneを実行するGitHub Actions
FlutterアプリをiOSのアプリストアへデプロイするため設定したFastlane
をGitHub Actions
を使ってデプロイするためGitHub Actions
を作ってみましょう。./.github/workflows/main.yml
ファイルを開いて下記のように修正します。
name: Deploy iOS and Android App to App Store and Play Store
on:
...
jobs:
release-ios:
name: Build and release iOS app
runs-on: macos-latest
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- uses: actions/checkout@v3
- uses: subosito/[email protected]
with:
flutter-version: '3.3.8'
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1.2'
- name: Install Fastlane
run: cd ios && bundle install && cd ..
- name: Install packages
run: flutter pub get
- name: Install pods
run: cd ios && pod install && cd ..
- name: Prebuild
run: flutter build ios --release --no-codesign
- name: Execute Fastlane command
run: cd ios && fastlane release type:github
timeout-minutes: 40
このように生成したGitHub Actions
をもっと詳しく見てみます。
...
jobs:
release-ios:
name: Build and release iOS app
runs-on: macos-latest
...
このGitHub Actions
は最新のmacOS
(macos-lates)の上で実行されます。
...
jobs:
release-ios:
...
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
...
その後、FlutterプロジェクトのiOSアプリをビルドしてデプロイするためXCode
をインストールします。
...
jobs:
release-ios:
...
steps:
...
- uses: actions/checkout@v3
- uses: subosito/[email protected]
with:
flutter-version: '3.3.8'
...
その後、コードを取ってくるため、checkout
とFlutterプロジェクトをビルドするためFlutter
をインストールします。
...
jobs:
release-ios:
...
steps:
...
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1.2'
- name: Install Fastlane
run: cd ios && bundle install && cd ..
...
Fastlane
はRubyで開発されていますので、Fastlane
をインストールして実行するためにはRuby
をインストールする必要があります。このようにインストールしたRuby
を使ってFastlane
と必要なライブラリをインストールします。
...
jobs:
release-ios:
...
steps:
...
- name: Install packages
run: flutter pub get
- name: Install pods
run: cd ios && pod install && cd ..
...
次はFlutter
プロジェクトをビルドするため必要なライブラリをインストールして、iOS用のライブラリも一緒にインストールします。
...
jobs:
release-ios:
...
steps:
...
- name: Prebuild
run: flutter build ios --release --no-codesign
- name: Execute Fastlane command
run: cd ios && fastlane release type:github
timeout-minutes: 40
最後に、Flutter
コマンドを使ってFlutterプロジェクトのiOSアプリをデプロイ用でビルドします。そして、Fastlane
を使ってアプリをデププロいします。
Fastlane
を使ってアプリをデプロイする時、結構時間が掛かります。私は無料で使えるGitHub Actions
の時間を最大5回使えるようにするためタイムアウト40分
で設定しました。
AndroidのためFastlaneを実行するGitHub Actions
FlutterアプリをAndroidのグーグルプレイへデプロイするため設定されたFastlane
をGitHub Actions
を使ってデプロイするためGitHub Actions
を作ってみましょう。./.github/workflows/main.yml
ファイルを開いて下記のように修正します。
name: Publish iOS and Android App to App Store and Play Store
...
jobs:
release-ios:
...
release-android:
name: Build and release Android app
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '12.x'
- uses: subosito/[email protected]
with:
flutter-version: '3.3.8'
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1.2'
- name: Install Fastlane
run: cd android && bundle install && cd ..
- name: Install packages
run: flutter pub get
- name: Prebuild
run: flutter build appbundle
- name: Execute Fastlane command
run: cd android && fastlane release
このように生成したGitHub Actions
をもっと詳しく見てみましょう。
...
jobs:
release-ios:
...
release-android:
name: Build and release Android app
runs-on: ubuntu-latest
...
このGitHub Actions
は最新のubuntu
(ubuntu-lates)の上で実行されます。
...
jobs:
release-ios:
...
release-android:
...
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '12.x'
...
そして、コードを取ってくるためcheckout
とFlutterプロジェクトのAndroidアプリをビルドするためJava
をインストールします。
...
jobs:
release-ios:
...
release-android:
...
steps:
...
- uses: subosito/[email protected]
with:
flutter-version: '3.3.8'
...
その後、FlutterプロジェクトをビルドするためFlutter
をインストールします。
...
jobs:
release-ios:
...
release-android:
...
steps:
...
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1.2'
- name: Install Fastlane
run: cd android && bundle install && cd ..
...
Fastlane
はRubyで開発されてますので、Fastlane
をインストールして実行するためRuby
をインストールする必要があります。このようにインストールしたRuby
を使ってFastlane
と必要なライブラリをインストールします。
...
jobs:
release-ios:
...
release-android:
...
steps:
...
- name: Install packages
run: flutter pub get
...
次はFlutter
プロジェクトをビルドするため必要なライブラリをインストールします。
...
jobs:
release-ios:
...
release-android:
...
steps:
...
- name: Prebuild
run: flutter build appbundle
- name: Execute Fastlane command
run: cd android && fastlane release
最後に、Flutter
コマンドを使ってFlutterプロジェクトのAndroidアプリをビルドします。そして、Fastlane
を使ってアプリをデプロイします。
全てのGitHub Actionsコード
今まで紹介したGitHub Actions
コードをまとめると次のようです。このGitHub Actions
コードを使ってFlutterアプリのデプロイに活用してみてください。
name: Deploy iOS and Android App to App Store and Play Store
on:
push:
tags:
- 'v*'
jobs:
release-ios:
name: Build and release iOS app
runs-on: macos-latest
steps:
- uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- uses: actions/checkout@v3
- uses: subosito/[email protected]
with:
flutter-version: '3.3.8'
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1.2'
- name: Install Fastlane
run: cd ios && bundle install && cd ..
- name: Install packages
run: flutter pub get
- name: Install pods
run: cd ios && pod install && cd ..
- name: Prebuild
run: flutter build ios --release --no-codesign
- name: Execute Fastlane command
run: cd ios && fastlane release type:github
timeout-minutes: 40
release-android:
name: Build and release Android app
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
with:
distribution: 'zulu'
java-version: '12.x'
- uses: subosito/[email protected]
with:
flutter-version: '3.3.8'
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.1.2'
- name: Install Fastlane
run: cd android && bundle install && cd ..
- name: Install packages
run: flutter pub get
- name: Prebuild
run: flutter build appbundle
- name: Execute Fastlane command
run: cd android && fastlane release
実行
このように生成したGitHub Actions
を実行するためにはGitのタグを生成する必要があります。次のコマンドを使ってGitのタグを生成します。
git tag -a v1.2.3 -m "release v1.2.3"
そして次のコマンドを使って生成したタグをGitHub
へプッシュ(Push)します。 그리고 다음 명령어를 사용하여 생성한 태그를 GitHub
에 푸시(Push)합니다.
git push origin v1.2.3
そしたらGitHub
のActions
タブで私たちが作ったGitHub Actions
が実行されることが確認できます。
完了
これでFastlane
でデプロイ自動化が設定されたFlutterプロジェクトをGitHub Actions
を使ってデプロイする方法について見てみました。皆さんもFastlane
とGitHub Actions
を使ってアプリのデプロイ自動化を実装してみてください。
私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!
アプリ広報
Deku
が開発したアプリを使ってみてください。Deku
が開発したアプリはFlutterで開発されています。興味がある方はアプリをダウンロードしてアプリを使ってくれると本当に助かります。