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 secretsopenci 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で追加しました。このブログでも、リリース内容と開発の記録をお届けしていきます。