どうも、現在子供が夏休みのため義実家の神戸に帰省して子供を義母と義祖母とに見てもらいながらぬくぬくリモート勤務を行なっているiOSエンジニアのkaです。
テスト用アプリを配布するためにTestFlightを利用しているのでいっつもポチポチクリックしている作業を自動化します。
現在配属されているプロジェクトはiOSエンジニアは一人なのでまだCIは利用していませんが、少し変更すればすぐに対応できると思います。
#結論
このシェルスクリプトでOKです
#!/bin/bash
readonly PROJECT_DIR="プロジェクトディレクトリ"
readonly WORKSPASE="ワークスペース名"
readonly SCHEME="スキーム名"
readonly ARCHIVE_DIR="アーカイブ作成ディレクトリ"
readonly EXPORT_PATH="ExportOptions.plistを指定(後述)"
readonly USER="AppStoreConnectで利用するAppleID"
readonly PASS="App用パスワード(後述)"
cd $PROJECT_DIR
rm -rf $ARCHIVE_DIR
mkdir $ARCHIVE_DIR
xcodebuild -workspace ./$WORKSPASE.xcworkspace \
-scheme $SCHEME \
-configuration Release \
archive \
-archivePath $ARCHIVE_DIR/build
xcodebuild -exportArchive \
-archivePath $ARCHIVE_DIR/build.xcarchive \
-exportPath $ARCHIVE_DIR \
-exportOptionsPlist $EXPORT_PATH
xcrun altool --upload-app \
-f $ARCHIVE_DIR/$SCHEME.ipa \
-t ios \
-u $USER \
-p $PASS \
#補足
#####ExportOptions.plistに関して
これは一度手作業でAppStore用にアーカイブをエクスポートすると自動で生成してくれるのでそれを使うのが良いです。
#####xcrun altoolに関して
引用: https://qiita.com/messhi/items/cb8c6f2b4b6540995189
こちらを参考にしていますが、実際にJenkinsなどで運用する場合にはこちらの記事の後半にあるAPI-Keyを使う方法でやるのが良いと思います
#####App用パスワードに関して
AppleIDのページで生成します
[セキュリティ]で、[App用パスワード]の[パスワードを生成…]をクリックします。
引用: https://qiita.com/uhooi/items/ec9dcd480a04bce8a963
#終わりです
Brewus,Inc.
株式会社ブリューアス
https://brewus.co.jp