4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FlutterプロジェクトにおいてGitHub Actionsでビルド番号を自動更新する🐱

Last updated at Posted at 2025-07-19

要約

  • App Store ConnectやGoogle Play Consoleでのアップロード要件を満たすビルド番号自動更新
  • GitHub ActionsとCiderを組み合わせたCI/CD

はじめに

FlutterアプリをApp Store ConnectやGoogle Play Consoleにアップロードする際、同じビルド番号のアプリは受け付けてもらえません。前回よりも大きなビルド番号である必要があり、手動での更新は忘れがちで面倒な作業です。この記事では、GitHub ActionsとDartパッケージの「Cider」を使ってビルド番号を自動更新する方法を、実際のプロジェクト例とともに解説します。

対象読者

  • App StoreやGoogle Playへのアップロードでビルド番号の管理に悩んでいる人
  • CI/CDでの自動化に興味がある人
  • 手動でのビルド番号更新を忘れがちな人

なぜビルド番号の自動更新が必要なのか

App Store Connect / Google Play Consoleの制約

App Store ConnectやGoogle Play Consoleでは、同じビルド番号のアプリはアップロードできません。必ず前回よりも大きなビルド番号である必要があります。

例えば、現在のアプリが1.0.0+10の場合、次回のアップロードでは1.0.0+11以上でなければなりません。この制約により、手動でのビルド番号管理は:

  • 忘れやすい: リリース直前に気づいてバタバタすることがある
  • 手間がかかる: 毎回手動でpubspec.yamlを編集する必要がある
  • ミスが起きやすい: 間違った番号を入力してしまう可能性

Ciderとは

CiderはDart/Flutterプロジェクト用のバージョン管理ツールです。pubspec.yamlのバージョン情報を自動で更新し、changelogの管理も行えます。

主な機能

  • pubspec.yamlのバージョン番号自動更新
  • セマンティックバージョニング(semver)に対応
  • ビルド番号の自動インクリメント
  • changelog管理

セットアップ方法

1. Ciderのインストール

dart pub global activate cider

2. 基本的な使用方法

# ビルド番号のみをインクリメント
cider bump build

# メジャーバージョンをインクリメント(1.0.0+1 → 2.0.0+1)
cider bump major

# マイナーバージョンをインクリメント(1.0.0+1 → 1.1.0+1)
cider bump minor

# パッチバージョンをインクリメント(1.0.0+1 → 1.0.1+1)
cider bump patch

GitHub Actionsでの自動化

実際のプロジェクトでは、GitHub Actionsを使ってdevブランチへのpush時に自動でビルド番号をインクリメントしています。

name: Bump Build Number

on:
  push:
    branches:
      - dev

jobs:
  bump-build-number:
    runs-on: ubuntu-latest
    permissions:
      contents: write

    steps:
      # 1. リポジトリのコードをチェックアウト
      - name: Checkout code
        uses: actions/checkout@v4

      # 2. Dart SDKをセットアップ (ciderの実行に必要)
      - name: Setup Dart
        uses: dart-lang/setup-dart@v1

      # 3. ciderパッケージをインストール
      - name: Install Cider
        run: dart pub global activate cider

      # 4. ciderを使ってビルド番号を+1する
      - name: Bump build number
        run: cider bump build

      # 5. 変更をコミットしてpushする
      - name: Commit and push changes
        run: |
          git config --global user.name 'github-actions[bot]'
          git config --global user.email 'github-actions[bot]@users.noreply.github.com'
          git add pubspec.yaml
          git commit -m "ci: Increment build number" -m "Automated by GitHub Actions"
          git push

ワークフローの詳細解説

  1. トリガー設定: devブランチへのpushで自動実行
  2. 権限設定: contents: writeでファイル更新権限を付与
  3. 環境構築: Dart SDKをセットアップしてCiderをインストール
  4. ビルド番号更新: cider bump buildでpubspec.yamlのビルド番号を自動インクリメント
  5. 変更のコミット: GitHub Actions botアカウントで変更をコミット・プッシュ

実際の動作例

実行前のpubspec.yaml

name: saitama_univ_app
description: "A new Flutter project."
version: 1.1.0+52

実行後のpubspec.yaml

name: saitama_univ_app
description: "A new Flutter project."
version: 1.1.0+53

ビルド番号(+の後の数字)のみが自動でインクリメントされます

まとめ

GitHub ActionsとCiderを組み合わせることで、App Store ConnectやGoogle Play Consoleの要件を満たすビルド番号の自動更新が実現できます。これにより:

  • アップロードエラーの防止: 同じビルド番号によるアップロード失敗を防げる
  • 作業効率の向上: 手動でのビルド番号更新作業が不要になる
  • ヒューマンエラーの削減: 番号の更新忘れや入力ミスがなくなる

特に複数人での開発やCI/CDパイプラインを構築している場合、このような自動化は開発フローの改善とリリース作業の確実性向上に大きく貢献します。

参考

4
0
0

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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?