v2.1.0の新機能

本日、GenuineCI v2.1.0 をリリースしました。今回は、Android のビルドをDartから書くためのヘルパーと、CLIで使用するチームを切り替える機能を追加しています。

v2.0.0 から18コミット、65ファイルの変更です。ワークフロー SDK の独立した利用に向けた整備や、静的解析の設定、ワークスペースのパス生成も改善しました。

APKもAABも、Dartのワークフローから。

FlutterCI に buildApk() と buildAab() を追加しました。APKとAndroid App Bundleのビルドを、解析やテストと同じようにawaitで並べて書けます。

flavorでプロダクトフレーバーを指定でき、dirでその処理の作業ディレクトリを変更できます。どちらも省略できるため、まずは引数なしで使い始められます。

GenuineCI自身のDashboardにも、署名に必要なファイルをシークレットから復元し、APKとAABをビルドするCIワークフローを追加しました。

await ci.flutter.buildApk(flavor: 'staging');
await ci.flutter.buildAab(flavor: 'production');

OpenCI.init()で作成したciを使う処理部分の抜粋です。初期化とimportは省略しています。

解析の厳しさを、プロジェクトに合わせる。

staticAnalysis() に、fatalInfo・noFatalInfos・noFatalWarningsのオプションを追加しました。infoを失敗として扱うか、infoやwarningでビルドを止めないかを、ワークフローごとに設定できます。

analyticsはデフォルトで抑制します。必要な場合はsuppressAnalytics: falseを指定でき、従来どおりdirで解析対象の作業ディレクトリも変更できます。

await ci.flutter.staticAnalysis(
  fatalInfo: true,
);

infoを失敗として扱う設定例です。初期化とimportは省略しています。

CLIから、使うチームを切り替える。

openci switch teamで、ログイン中のプロファイルに所属するチームを取得し、上下キーとEnterで選択できるようになりました。現在のチームを表示し、長い一覧や日本語のチーム名にも対応しています。

選択したチームは現在のプロファイルに保存され、その後のシークレット操作にも反映されます。トークンやサーバー設定、他のプロファイルは保持し、キャンセル時は元のチームをそのまま使います。

対話入力の後始末とシグナル処理を共通化し、macOS ARM64で端末終了時にクラッシュする問題への対策も取り込みました。

openci switch team
openci list secrets
openci sync secrets

openci loginでログインした後に実行してください。

SDKとパス生成も、使いやすく。

openci_workflowは0.1.1になりました。サーバー側のopenci_sharedやChopperへの依存を外し、単体利用とpub.dev公開に向けて、README・使用例・ライセンス・パッケージ情報を整備しています。

openci sync pathsはワークスペースの深い階層まで収集するようになりました。たとえばWorkspacePaths.root.apps.dashboard.android.appのように、Androidの設定ファイルを置く場所にも型のあるパスを使えます。ビルド出力や依存、隠しディレクトリは生成対象から除外します。

あわせてGenuineCIのLPとブログをJasprで追加しました。このブログでも、リリース内容と開発の記録をお届けしていきます。


GenuineCI を詳しく見る