プルリクエストをレビューするとき、変更が最新のベースブランチと一緒に動くか、実機ではどう見えるか。OpenCI v2.5.0では、この両方を同じPRで確認できます。

最新のベースブランチと組み合わせてテストする

PRのCIは、GitHubが作成したテスト用マージコミットをチェックアウトします。実行前に、その親コミットが現在のベースブランチと対象のPRのコミットに一致することを確認します。レビュー中にベースブランチが進んだときも、どの組み合わせでテストしたかをビルドログのコミットIDで追えます。

コンフリクトでマージできない場合は、GitHub Checksとダッシュボードに理由と対処方法が表示されます。同じ変更・実行条件のPR通知が重複して届いた場合は、既存のジョブを使います。PRを閉じるかマージすると、そのPRで待機中・実行中のジョブは取り消されます。

テスト用アプリをPRのQRコードから開く

Firebase App DistributionにアップロードしたiOSのIPAやAndroidのAPKには、テスター用URLがあります。ワークフローでこのURLを postQrCode に渡すと、成功時にOpenCIが元のPRにリンクとQRコードを掲載します。コメントにはワークフロー名と、取得できたアプリのバージョン・ビルド番号が並びます。

たとえばiOSでは、ビルド済みの ipaPath を使って、Firebaseに登録した qa グループへ次のように配布できます。

final testerUrl = await openCI.flutter.deployIpaToFirebaseAppDistribution(
  ipaPath: ipaPath,
  serviceAccountJsonBase64: Secrets.firebaseServiceAccountJsonBase64.value,
  groups: ['qa'],
);
await openCI.pullRequest.postQrCode(url: testerUrl);

コメントは英語が既定で、lang: PostQrCodeLang.ja を渡すと日本語になります。次のビルドが成功すると同じコメントが更新され、失敗した場合も直前に成功したビルドのリンクを使えます。実機で開くテスターにはFirebase側のアクセス権が必要です。ワークフローSDK 0.2.9

CLIを openci に切り替える

CLIのパッケージ名は openci_cli_plus、コマンド名は openci になりました。genuineci で使っていたプロファイルと設定を引き継ぎます。インストール後に、現在のチームを確認できます。

dart install openci_cli_plus
openci status

シークレット定義を同期するスクリプトでは genuineci sync --secrets を openci sync --secrets に変更してください。CLIリファレンス

ダッシュボードとWebプレビューの更新

  • ダッシュボードの「設定 → 課金を管理」で、チームの当月の利用状況と過去の請求履歴を確認できます。Cloudの実行料金は1分1円(税込)で、1分未満の端数は月のチーム合計に対して一度だけ切り上げます。料金と計算例
  • macOS版ダッシュボードのSparkleによる更新を再開しました。macOS 26以降向けに、署名・公証済みのOpenCI 2.0.0を公開しています。macOS版の更新フィード
  • OpenCI公式サイトとWebダッシュボードでは、対象のPRごとにFirebase Hostingのプレビューを作成します。同じPRに変更を足すと同じURLが更新され、有効期限は公開から1時間です。プレビューの実装

前回の記事で紹介したStacked PRアプリとそのCIは、今回のタグでリポジトリから削除しました。SDKをソースから使う場合は、Goヘルパーの削除とFirebase Hosting APIの追加も変更点です。これらのSDK変更はpub.devの0.2.9より後のものです。GitHub Release v2.5.0 · v2.4.0からの全変更