Flutter開発入門67 Flutterアプリを自動デプロイする方法【CI/CD】

Flutter

はじめに

Flutterアプリを開発していると、頻繁な更新や新機能の追加に伴って、アプリのビルドやデプロイが手間に感じることがあるでしょう。そんなときに役立つのが**CI/CD(継続的インテグレーションと継続的デプロイ)**です。FlutterアプリにCI/CDを導入することで、ビルド・テスト・デプロイのプロセスを自動化し、迅速かつ効率的なリリースを実現できます。

この記事では、FlutterアプリにCI/CDを導入するメリットや、具体的な実装方法について解説します。特に、GitHub ActionsBitriseなどのツールを使用した設定方法を取り上げ、簡単に自動デプロイを構築できるようにガイドします。

CI/CDとは

継続的インテグレーション(CI:Continuous Integration)

開発者がコードをリポジトリにプッシュするたびに、自動でビルドとテストが行われる仕組みです。これにより、コードの変更が他の部分に与える影響を早期に検出できます。

継続的デプロイ(CD:Continuous Deployment)

ビルドやテストが成功した後、自動的にアプリがリリース環境にデプロイされます。これにより、手動でのデプロイ作業が不要になり、リリースの頻度を高めることができます。

なぜFlutterアプリにCI/CDが必要なのか

  1. 効率的な開発フロー:自動化により、時間を節約し、手動ミスを減らします。
  2. 安定した品質:毎回ビルドとテストが行われるため、アプリの品質が維持されます。
  3. 迅速なリリース:新機能やバグ修正をすぐにユーザーに届けられます。

FlutterでのCI/CDの設定

FlutterアプリのCI/CDは、以下の手順で設定できます。今回は、GitHub Actionsを使った例を紹介しますが、他のツール(Bitrise、GitLab CI/CDなど)でも同様の考え方で設定できます。

Flutterプロジェクトの準備

まず、Flutterプロジェクトが最新の状態であることを確認しましょう。必要な依存パッケージがpubspec.yamlに正しく記述されていることを確認します。

dependencies:
  flutter:
    sdk: flutter
  # 他の依存パッケージ...

GitHub Actionsの設定

GitHubリポジトリを使用している場合、GitHub Actionsを使ってCI/CDを簡単に設定できます。

ワークフローファイルを作成する
  1. リポジトリのルートに.github/workflows/flutter-ci.ymlファイルを作成します。
  2. 次のコードをワークフローファイルに追加します。
name: Flutter CI/CD

on:
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v3

      - name: Setup Flutter
        uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.10.5'

      - name: Install dependencies
        run: flutter pub get

      - name: Run tests
        run: flutter test

      - name: Build APK
        run: flutter build apk --release

      - name: Upload build artifacts
        uses: actions/upload-artifact@v3
        with:
          name: release-apk
          path: build/app/outputs/flutter-apk/app-release.apk

各ステップの説明

  • Checkout code:GitHubリポジトリからコードを取得します。
  • Setup Flutter:指定したバージョンのFlutter SDKをインストールします。
  • Install dependenciesflutter pub getを実行して、依存パッケージをインストールします。
  • Run testsflutter testを実行して、プロジェクトのテストをすべて実行します。
  • Build APK:リリース用のAPKをビルドします。iOSの場合はflutter build iosを使用します。
  • Upload build artifacts:ビルドしたAPKファイルをアップロードして、後でダウンロードできるようにします。

Bitriseを使ったCI/CDの設定

1. Bitriseアカウントの作成とプロジェクトの追加

  1. Bitriseにアクセスして、アカウントを作成します。
  2. FlutterプロジェクトをBitriseに接続し、CI/CDパイプラインを作成します。

2. ワークフローの設定

Bitriseでは、Flutter用のワークフローを事前に設定できます。以下は、Bitriseでの基本的なワークフローの例です。

  • Git Clone:リポジトリからコードを取得します。
  • Flutter Install:Flutter SDKをインストールします。
  • Flutter Test:テストを実行します。
  • Flutter Build:アプリをビルドします。
  • Deploy to Firebase App Distribution:ビルドしたアプリをFirebaseにデプロイします。

Tip: BitriseのGUIを使えば、ワークフローの設定が簡単に行えます。ビルドステップをドラッグ&ドロップするだけで、CI/CDパイプラインを構築できます。

CI/CD導入のベストプラクティス

  1. 早期のテスト実行:コードがリポジトリにプッシュされた時点でテストが実行されるように設定しましょう。これにより、バグを早期に発見できます。
  2. デプロイの自動化:ビルドとテストが成功した後、自動的にデプロイされるようにしましょう。Firebase App DistributionやApp Store Connectを使うと便利です。
  3. セキュリティ管理:デプロイに必要なAPIキーやシークレット情報は、環境変数に設定して管理します。公開リポジトリにこれらの情報を含めないように注意してください。

まとめ

FlutterアプリにCI/CDを導入することで、ビルドやデプロイのプロセスが自動化され、開発フローが大幅に効率化されます。この記事で紹介したGitHub ActionsやBitriseを活用することで、スムーズなリリースが可能になります。

CI/CDの設定は初めてだと少し複雑に感じるかもしれませんが、設定を一度行ってしまえば、後は自動化されたフローがあなたの開発をサポートしてくれます。ぜひ、今回のガイドを参考にして、あなたのFlutterプロジェクトにCI/CDを導入してみてください。

コメント