はじめに
Bitriseの導入で手こずったので、備忘録です。
環境
Xcode: 13.2.1
macOS: M1 Monterey 12.1 Beta
iOS: 15.0
CocoaPods: 1.10.2
プロジェクト作成
プロジェクトネームはここではこんな感じでつけときます。
Include Testsにチェックをつけてテストファイルを追加します。
テストコードを書く
次のようなコードをBitrise_SampleTestsに書きます。
class Bitrise_SampleTests: XCTestCase {
func testAdd() {
var age = 21
age += 1
XCTAssertEqual(age, 22)
}
...
}
⌘+U
でテストが成功することを確認しましょう。
僕の場合はUIテストのこの二つのメソッドが失敗します。今回の趣旨とは、ずれてしまうので、一旦ここはこれらのメソッドをコメントアウトして先に進むことにしよう。
テストが成功したら次に進みます。
CocoaPodsでライブラリ管理
ライブラリ管理はやらなくてもBitriseを使えるのですが、ほとんどのプロジェクトでは何かしらのライブラリ管理をしていると思うので、今回も使います。
(というか、ライブラリを導入したときのBitrise上のエラーに苦戦したのでこの記事を書いてます。)
プロジェクトを閉じてCocoaPodsを使ってライブラリを管理します。
先ほど作ったプロジェクトのフォルダに移動します。
Podfileを以下のコマンドで作成します。
% pod init
以下のようにPodfileを編集しておきます。
今回は例としてRealmを使います。(他のでも大丈夫)
# Uncomment the next line to define a global platform for your project
platform :ios, '15.0'
target 'Bitrise-Sample' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for Bitrise-Sample
pod 'RealmSwift'
target 'Bitrise-SampleTests' do
inherit! :search_paths
# Pods for testing
end
target 'Bitrise-SampleUITests' do
# Pods for testing
end
end
ライブラリをインストールします。
% pod install
以降はxcworkspaceを使います。
ViewControllerでRealmを読み込んでビルドしてエラーが出ないか確認しておきましょう。
Bitriseのセットアップ
まだBitriseアカウントをお持ちでない方はこちらからBitriseのアカウントを作成してください。
次のDashboradのこちらのAdd new appで先ほど作ったプロジェクトをBitriseと紐付けます。
WebUIを選択します。
今回はPrivateにしておきます。
先ほど作ったプロジェクトのGitHubリポジトリを選択します。
SSH keyを作成しておきましょう。
branchはmasterにしておきます。
Configuration completeが終わったら次はProject build configurationの設定をします。
Distribution methodはdevelopmentにし、stackはmacOSと同じものにしてNext->Confirmとします。
App iconはSkip for Nowにしておきます。
Webhook setupはRegisterの方にしておきましょう。
一番下のボタンを押したらビルドが走ります。少し待ちましょう。
しかし、失敗してしまいます。
理由は、Bitrise上でCocoaPodsをインストールできていないためです。
Workflow Editorに移動します。
こちらのXcode Test for iOSのプラスボタンを押します。
cocoapodsと検索するとRun CocoaPods installと出てくるので、こちらを選択します。
Workflowsに追加されました。上からこの順序でBitrise上で実行されるので、このWorkflowを追加する必要がありました。
(Carthageを使った場合はCarthageと検索して出てくるものをWorkflowsに追加してください)
⌘+S
で保存します。
bitrise.ymlに移動します。
BITRISE_PROJECT_PATHが<プロジェクト名>.xcodeprojになっている場合は、<プロジェクト名>.xcworkspaceにします。
これでセットアップは終わりです。
適当にコードを追加して差分を作ります。
コミットしてプッシュしましょう。
プッシュするとそれがトリガーになってBitriseのWorkflowsが走ります。
Runningになっているのでこちらを選択してみてみましょう。
走っていますね。
Successしました。
しかし、10分近く経ってしまいました。
これは見ての通りxcode-test@4がかなりの時間かかっているからで、特にUIテストに時間がかかっています。なので、次に単体テストのみ実行する方法を紹介します。
単体テストのみ実行する
UIテストは重たいので単体テストのみ実行したいこともあると思います。その手順も紹介します。
Edit Schemeを選択します。
Testを選択し、Bitrise-SampleUITestsのEnabledのチェックを外します。
コミットしてプッシュします。
ちょっとだけ早くなりました。
単体テストをあえて失敗させてみる
テストが通らない場合はどうなるのかも確認しておきましょう。
あえて失敗するコードを書いてみます。
コミットしてプッシュします。
よかった、失敗してくれました。
おわりに
Bitriseしか勝たん