🛠️

XcodeBuildToolPluginをCI上でも使う

2022/10/13に公開

Xcode 14になり、Swift Package Plugin周りが拡充されてきました。中でもXcodeBuildToolPluginを利用することでSwift PackageのexecutableTargetbinaryTargetのビルドツールコマンドをアプリのビルド時に実行することができるようになりました。

XcodeBuildToolPluginはProject > Build Phases > Run Build Tool Plug-ins で指定することで実行可能ですが、GitHub ActionsなどのCI上でxcodebuildでビルドした場合に** TEST BUILD INTERRUPTED **となってビルドに失敗する場合がありました。これは、外部ライブラリのPluginは危険(許可が必要)だということで、実行できないためのようです。

この回避方法は3つあります。

1つ目に、xcodebuildでビルドする際に-skipPackagePluginValidationオプションをつける方法です。これでPlugin実行権限の確認がスキップされます。

2つ目に、XcodeのUser DefaultsのIDESkipPackagePluginFingerprintValidatationキーにYESを設定する方法です。これも1つ目の方法と同様ですが、Xcode Cloudのようにビルド時にオプションを指定できない時に使える手です。

defaults write com.apple.dt.Xcode IDESkipPackagePluginFingerprintValidatation -bool YES

3つ目に、外部ライブラリのビルドツールの実行ファイルがArtifact Bundleとしてリリースされている場合に限りますが、それを用いたPluginをローカルのSwift Packageに追実装して使う方法です。ローカルPackageであれば開発者のソースの一部とみなされて実行権限の確認がパスされるようです。

参考

Discussion