【ゼロから始めるFlutter×GitHub入門】第6回(最終回):一歩先へ!GitHub ActionsでFlutterの自動テスト&ビルド


おはようございます。この連載も、いよいよ最終回です。

振り返ると、「教える」というより「自分自身が学び直す記録」として始めたこの6回、最後は少しだけ背伸びして、CI/CD(継続的インテグレーション)の入り口を覗いてみようと思います。

目次

「コードをプッシュしたら自動でテストが走る」仕組み

ここまでの回では、flutter analyze や flutter test を、自分のパソコンで手動で実行する前提で進めてきました。

でも実際には、「テストを実行し忘れたままプッシュしてしまった」「analyzeでエラーが出ているのに気づかず進めてしまった」ということも起こります。

GitHub Actionsは、GitHubにコードをプッシュしたタイミングで、決められた作業(テストの実行など)を自動的に行ってくれる仕組みです。人間が「テストを実行するのを忘れる」ということ自体をなくせるのが、いちばんの利点です。

初心者向けのシンプルなWorkflow

GitHub Actionsの設定は、リポジトリ内の .github/workflows/ というフォルダに、YAMLというファイルを置くことで行います。

まずはこのフォルダとファイルを作成します。

mkdir -p .github/workflows

そして .github/workflows/flutter-ci.yml という名前で、以下の内容を作成します。

name: Flutter CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: subosito/flutter-action@v2
        with:
          flutter-version: '3.44.7'

      - run: flutter pub get
      - run: flutter analyze
      - run: flutter test

内容をざっくり説明すると、

  • on: の部分で「いつ実行するか」を指定しています。ここでは main へのプッシュと、Pull Request作成時に実行される設定です
  • steps: の部分が実際の作業内容で、コードを取得 → Flutter環境を準備 → 依存パッケージを取得 → flutter analyze → flutter test、という流れです

このファイルをコミット・プッシュすると、GitHubのリポジトリ画面にある「Actions」タブで、自動テストの実行結果を確認できるようになります。テストが通れば緑のチェックマーク、失敗すれば赤いバツ印が表示されるので、一目でわかります。

pubspec.lock はGit管理に含めるべき?

Flutter特有の疑問として、pubspec.lock を .gitignore に入れるべきか迷う方もいるかもしれません。

結論としては、アプリ開発の場合は pubspec.lock もGit管理に含めるのが基本です。これは「使用しているパッケージのバージョンを固定する」ためのファイルで、これを含めておくことで、自分の環境でもGitHub Actions上でも、同じバージョンのパッケージで flutter test が実行されるようになります。もし含めていないと、CI上だけ違うバージョンのパッケージが使われてテストが失敗する、といったことも起こり得ます。

(ライブラリ・パッケージ自体を作っている場合は事情が異なりますが、アプリ開発ではまず「含める」で問題ありません。)

連載を終えて

第1回で「Gitはタイムマシン」という話から始まり、.gitignore、ブランチ、APIキー管理、Issues/Projects、そして今回のGitHub Actionsまで、一通りの基礎を駆け足で回ってきました。

正直なところ、自分自身「なるほど、そういうことか」と腑に落ちながら書いた部分も多い連載でした。

ここまでお付き合いいただき、ありがとうございました。

目次