CI2Go for macOS をリリースしました

iPhone, iPad, Apple Watch 向け CircleCI クライアント CI2Go の macOS 版を公開しました。
iOS 版, macOS 版 共に同じ URL からダウンロードいただけます。
製品サイト: ci2go.app
このアプリは、既存 iOS アプリのコードベースを Mac Catalyst を用いて移植したものです。
iOS 版, mac 版 両新バージョンは、以下の新機能を含みます。
ダークモード

ダークモード に対応し、カラースキーム選択の機能の提供を終了しました。
iPad キーボードショートカット

iPad キーボードショートカットが利用いただけるようになりました。
⌘ [ で戻る、⌘ R で再読み込み、⌥ ⇧ ⌘ L でログアウトを行います。
WIP: Workflows
CircleCI Workflows の対応は、まだ完全に行われていませんが、将来のマイルストーンには含まれています。
アップデートの舞台裏

もちろん、Mac Catalyst アプリの継続的デリバリーも、iOS 版同様設定しました。
また、パッケージ管理を Carthage から Swift Package Manager に変更しました。
これらは、公開 GitHub リポジトリ に含まれており、どなたでも閲覧いただけます。
私のように Mac Catalyst のアプリを CircleCI で構築しようとする、他の開発者の助けになればと幸いです。
以下のようなワークアラウンドを行ったりしました。
macOS プラットフォームで、依存ビルドを含むと Swift パッケージのビルドが失敗する。
- 例:
multiple configured targets of 'KeychainAccess' are being created for macOS - ビルドターゲットを複製し、依存ビルドを削除しました。
- 参照: Swift PM app in Xcode 11 (beta 5) gets four “My Mac” platform options
- 例:
fastlane match で Mac Catalyst 向けのプロビジョニングが作成できない
platform: 'macos'を指定すると Mac 向けのものが作られる。skip_provisioning_profilesをtrueに設定、.provisioningprofileファイルをバージョン管理に追加し、CI のステップで~/Library/MobileDevice/Provisioning Profiles/にコピーするようにしました。match( type: 'development', app_identifier: %w(com.ci2go.ios.Circle), skip_provisioning_profiles: true, platform: 'macos' )
fastlane deliver が
reject_if_possible: trueを設定した再、platformをosxに設定しても、iOS のバイナリーを取り下げる。- 今の所 Mac 版では、
reject_if_possibleをfalseに設定し、新しいバイナリーを提出する必要がある場合は手動で取り下げています。
- 今の所 Mac 版では、
fastlane deliver が Mac アプリの審査提出に失敗する。
Spaceship が App Store Connect API のレスポンス形式に対応できていない様子。
ref: tunes_client.rb
例外を
rescueしています。rescue NoMethodError => e puts e raise e unless e.message == %q(undefined method `fetch' for nil:NilClass) puts "... Caught error, but omitting" end
応援する
GitHub Sponsors のページを公開しました。もしよかったら CI2Go の開発を応援してください 🙇♂️
関連記事
2018-12-25
2016-03-25
2016-01-29