📝

react native(cocoapods)をXcode Cloudでビルドする設定

2024/09/22に公開

こんにちは株式会社DeLTの栗田です。

最近react-nativeを使うことが多いのでビルドに関するメモを残しておきます。

前提

react-nativeプロジェクトが存在する。
-> ここではプロジェクトの作成方法などは説明しません。

App store connectにアプリを作成済み。
-> Apple Developper、App store connect上のアプリ作成などの手順も説明しません。

環境

  • react-native
  • iosパッケージ管理:cocoapods
  • npmパッケージ管理:yarn

パッケージインストールScriptの作成

ios/ci_scriptsci_post_clone.sh この名前でshを作成します。

https://developer.apple.com/documentation/xcode/writing-custom-build-scripts

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ブランチにマージすることで自動ビルドが走ります。

以上

参考になりそうな技術記事も書いてます。
https://delt.co.jp/article

Discussion