Bitrise から App Store へアプリをデプロイする


0.はじめに

iOS アプリを提供するにあたって、Bitrise を使って、App Store へデプロイする手順を試してみました。

Git リポジトリは、GitHub を利用。

1.Worlflows

  • Activate SSH key (RSA private key) : ※デフォルト
  • Git Clone Repository : ※デフォルト
  • Bitrise.io Cache:Pull : ※デフォルト
  • File Downloader
  • Replaces Xcode's project PRODUCT_BUNDLE_IDENTIFIER
  • Set Xcode Project Build Number
  • Set Xcode Plist Value (〜)
  • Script
  • Certificate and profile installer : ※デフォルト
  • Recreate User Schemes
  • Run CocoaPods install
  • Xcode Archive & Export for iOS
  • Deploy to Bitrise.io - Apps, Logs, Artifacts : ※デフォルト
  • Bitrise.io Cache:Push : ※デフォルト
  • Deploy to iTunes Connect - Application Loader

File Downloader

  • Input variables
    • Download source url
      • [ダウンロードファイルパス]
    • Download destination path
      • [ダウンロード保存先ファイルパス]

Replaces Xcode's project PRODUCT_BUNDLE_IDENTIFIER

  • Input variables
    • Xcode project path
      • $BITRISE_SOURCE_DIR/$BITRISE_XCODEPROJ_PATH
    • New bundle identifier
      • $BUNDLE_IDENTIFIER

Set Xcode Project Build Number

  • Input variables
    • Info.plist file path
      • $BITRISE_SOURCE_DIR/$BITRISE_SCHEME/$BITRISE_SCHEME/Info.plist
    • Version Number
      • $CFBundleShortVersionString

Set Xcode Plist Value

  • Input variables
    • Info.plist file path
      • $BITRISE_SOURCE_DIR/$BITRISE_SCHEME/$BITRISE_SCHEME/Info.plist
    • Plist key
      • [Info.plist の置換するキー]
    • Plist value
      • [Info.plist の置換するキーの値]

Script

#!/usr/bin/env bash
# fail if any commands fails
set -e
# debug log
set -x

# write your script here
echo "Hello World!"

ls -la

ls -la ${BITRISE_SCHEME}

ls -la ${BITRISE_XCODEPROJ_PATH}

# Code Signing (project.pbxproj)
export PROJECT_PBXPROJ_PATH=${BITRISE_XCODEPROJ_PATH}/project.pbxproj
sed -i -e 's|DEVELOPMENT_TEAM .*;|DEVELOPMENT_TEAM = [Apple Developers Team ID];|g' ${PROJECT_PBXPROJ_PATH}
sed -i -e 's|CODE_SIGN_IDENTITY .*;||g' ${PROJECT_PBXPROJ_PATH}
sed -i -e 's|PROVISIONING_PROFILE .*;||g' ${PROJECT_PBXPROJ_PATH}
sed -i -e 's|PROVISIONING_PROFILE_SPECIFIER .*;||g' ${PROJECT_PBXPROJ_PATH}
sed -i -e 's|CODE_SIGN_STYLE .*;|CODE_SIGN_STYLE = Manual;CODE_SIGN_IDENTITY = "iPhone Distribution";PROVISIONING_PROFILE_SPECIFIER = [Code Signing に登録したプロビジョニングファイルの名称];|g' ${PROJECT_PBXPROJ_PATH}
cat ${PROJECT_PBXPROJ_PATH}

# Info.plist
cat ${BITRISE_APP_PATH}/Info.plist

cat ${BITRISE_APP_PATH}/GoogleService-Info.plist

# Pods Deintegrate & Cache Clean
cd ${BITRISE_SCHEME}
gem install cocoapods --pre
pod deintegrate
pod cache clean --all
rm -f Podfile.lock
ls -la

# or run a script from your repository, like:
# bash ./path/to/script.sh
# not just bash, e.g.:
# ruby ./path/to/script.rb

Code Signing (project.pbxproj)

Code Signing を自動ではなく、指定のプロビジョニングファイルで行う為の設定。

# Code Signing (project.pbxproj)
export PROJECT_PBXPROJ_PATH=${BITRISE_XCODEPROJ_PATH}/project.pbxproj
sed -i -e 's|DEVELOPMENT_TEAM .*;|DEVELOPMENT_TEAM = [Apple Developers Team ID];|g' ${PROJECT_PBXPROJ_PATH}
sed -i -e 's|CODE_SIGN_IDENTITY .*;||g' ${PROJECT_PBXPROJ_PATH}
sed -i -e 's|PROVISIONING_PROFILE .*;||g' ${PROJECT_PBXPROJ_PATH}
sed -i -e 's|PROVISIONING_PROFILE_SPECIFIER .*;||g' ${PROJECT_PBXPROJ_PATH}
sed -i -e 's|CODE_SIGN_STYLE .*;|CODE_SIGN_STYLE = Manual;CODE_SIGN_IDENTITY = "iPhone Distribution";PROVISIONING_PROFILE_SPECIFIER = [Code Signing に登録したプロビジョニングファイルの名称];|g' ${PROJECT_PBXPROJ_PATH}
cat ${PROJECT_PBXPROJ_PATH}

Pods Deintegrate & Cache Clean

CocoaPods をクリーンする。

# Pods Deintegrate & Cache Clean
cd ${BITRISE_SCHEME}
gem install cocoapods --pre
pod deintegrate
pod cache clean --all
rm -f Podfile.lock

Recreate User Schemes

  • Input variables
    • Project or Workspace path
      • $BITRISE_PROJECT_PATH

Run CocoaPods install

  • Input variables
    • Podfile path
      • [Podfile のパス] ※例 : $BITRISE_SCHEME/Podfile

Xcode Archive & Export for iOS

  • Input variables
    • Select method for export
      • app-store
  • Debug
    • Do a clean Xcode build before the archive?
      • yes

Deploy to iTunes Connect - Application Loader

  • Input variables
    • Apple ID: Email
      • $APPLE_ID
    • Apple ID: Password
      • $APPLE_PASSWORD
    • Apple ID: Application-specific password
      • $APPLE_APPLICATION_SPECIFIC_PASSWORD

2.Code Signing

PROVISIONING PROFILE

必要なプロビジョニングファイルを登録します。

CODE SIGNING CERTIFICATES

必要な証明書(*.p12)を登録します。

GENERIC FILE STORAGE

今回は、アプリに Firebase ライブラリを利用しているので、構成ファイル(GoogleService-Info.plist)を登録しています。

3.Secrets

  • Secret Environment Variables
    • APPLE_ID
      • App Store へのデプロイに使用される Apple ID
    • APPLE_PASSWORD
      • App Store へのデプロイに使用される Apple ID
    • APPLE_APP_ID
      • アプリ ID
    • APPLE_APPLICATION_SPECIFIC_PASSWORD

4.Env Vars

  • App Environment Variables
    • BITRISE_PROJECT_PATH
      • ワークスペースファイル (*.xcworkspace) のパス
    • BITRISE_PROJECT_PATH
      • プロジェクトファイル (*.xcodeproj) のパス
    • BITRISE_APP_PATH
      • アプリのベースフォルダのパス
    • BITRISE_SCHEME
      • アプリのリソース名称
    • BUNDLE_IDENTIFIER
      • アプリのバンドルID(Bundle identifier)
    • CFBundleShortVersionString
      • アプリのバージョン ※例 : 1.0.0

5.App Store

確か、こんな感じだった気がする…

99.ハマりポイント

  • うーん。覚えてないなぁー

XX.まとめ

以前、こちらの記事を書いたんですが、iOS アプリも記事を書こうと思いつつ…

だいぶ時間が空きましたが、記事を書くことが出来て良かったです!

Bitrise から Google Play へアプリをデプロイする - Qiita

では♪

  • ※参考 :
    • 参考にさせて頂いたサイトがたくさんあったと思うんですが…、すいません、忘れてしまいました…。