react native(cocoapods)をXcode Cloudでビルドする設定
こんにちは株式会社DeLTの栗田です。
最近react-nativeを使うことが多いのでビルドに関するメモを残しておきます。
前提
react-nativeプロジェクトが存在する。
-> ここではプロジェクトの作成方法などは説明しません。
App store connectにアプリを作成済み。
-> Apple Developper、App store connect上のアプリ作成などの手順も説明しません。
環境
- react-native
- iosパッケージ管理:cocoapods
- npmパッケージ管理:yarn
パッケージインストールScriptの作成
ios/ci_scripts
に ci_post_clone.sh
この名前でshを作成します。
ci_post_clone.sh
クローン後スクリプトは、Xcode Cloud が Git リポジトリをクローンした後に実行されます。クローン後スクリプトを使用して、追加のツールをインストールしたり、プロパティ リストに新しいエントリを追加したりすることができます。ci_pre_xcodebuild.sh
事前xcodebuildスクリプトは、Xcode Cloud がxcodebuildコマンドを実行する前に実行されます。事前xcodebuildスクリプトを使用して追加の依存関係をコンパイルすることもできます。ci_post_xcodebuild.sh
ポストxcodebuildスクリプトは、Xcode Cloud がxcodebuildコマンドを実行した後に実行されます (コマンドが失敗した場合でも) xcodebuild。ポストxcodebuildスクリプトを使用して、成果物をストレージまたは別のサービスにアップロードする場合があります。
このような形でyarnとpodでライブラリのインストールを実施します。
#!/bin/sh
cd ..
# Install Node, CocoaPods, and yarn using Homebrew.
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE
export HOMEBREW_NO_AUTO_UPDATE=1
brew install cocoapods
brew install node@18
brew link node@18
brew install yarn
# Install dependencies
yarn
pod install
環境変数を使ったり、.netrcを使いたい場合のサンプルです。
#!/bin/sh
touch ~/.netrc
echo "machine api.mapbox.com" > ~/.netrc
echo "login mapbox" >> ~/.netrc
echo "password ${MAP_BOX_INSTALL_ACCESS_TOKEN}" >> ~/.netrc
chmod 0600 ~/.netrc
cd ..
# Install Node, CocoaPods, and yarn using Homebrew.
export HOMEBREW_NO_INSTALL_CLEANUP=TRUE
export HOMEBREW_NO_AUTO_UPDATE=1
brew install cocoapods
brew install node@18
brew link node@18
brew install yarn
# Install dependencies
yarn
pod install
Xcode Cloudのワークフロー設定
こんな感じです。
開始条件はmainブランチの内容に変更があった場合にしておきます。
ビルド
githubと連携してあるのであとはmainブランチにマージすることで自動ビルドが走ります。
以上
参考になりそうな技術記事も書いてます。
Discussion