この記事なに
- BitriseでAndroidアプリをビルドする際の超基本的な手順をざっくりと記述しています
- ほぼ公式ドキュメントに記載されている内容です
##Bitriseとは
Bitrise
BitriseのGitHub
GUIで直感的にビルドフローを作成できるOSSなCIサービスです。
プランは4つあり、月あたりのビルド回数や利用メンバー数、並列処理数などに違いがあるようです。Hobby
という無料プランも用意されているので、趣味の開発でもBitriseでCI廻せます
Bitriseでは基本的にGUIでビルドフローを作っていきます。また、フローを作っていくと最終的にはymlファイルが生成されるため、慣れている方はこのymlを直接編集することも可能です。
Bitriseのアカウント作成
Sign-up画面でユーザー名、パスワードを設定します。
途中で所属企業の情報を聞かれますが、空欄のままでも問題ありませんでした。
アカウントができました
BitriseとGitHubを連携
上記の画面下部のAdd First App
ボタンをクリックするとアプリの登録・設定画面に進みます。Bitriseでは1つのレポジトリをアプリ(App)として登録・管理していくイメージになります。
連携先としてGitHubを選択しレポジトリを選択、ビルド対象ブランチ名など必要な情報を入力していきます
ここでprivateレポジトリを選択した場合にはSSH Keyの設定画面が出てきますが、焦らずこのページを参照して自動or手動でKeyを設定します
ビルドしたいModule、Variantを入力していきます
また、デフォルトでそうなっていると思いますが、The root directory of an Android project
はカレントパス(.
)を入力すると吉です。
最後にWebHookを設定するか聞かれますが、ここでは一旦スキップします。
最初のビルドをスタートします
ビルドが終わるまで待ちます。
ここでビルドが失敗しても気にせずに先に進みます
Workflowの作成
BitriseのWorkflow
を作っていきます。先程のビルド画面の↓のボタンを押すとWorkflow編集画面に飛べます。
画面左側にActivate SSH key (RSA private key)
から始まるボックスが縦に並んでいるかと思います。この1つ1つのボックスがBitriseではStep
と呼ばれ、Step
の一連の流れがWorkflow
となります。
Step
はDrag&Dropで順番を入れ替えることが可能で、Step
間の+
ボタンから新たなStep
を追加することができます。
デフォルトで用意されているAndroid Unit Test
の下にAndroid Build
,Sign APK
を追加してみました↓
そしてWorkflowは1つのレポジトリに複数作成することができます。
例えば、PullRequest時、デイリービルド時、リリース時...などにそれぞれ対応するWorkflow
をつくることが可能です。
↓このボタンから新しいWorkflow
を追加できて......
こんな感じで入力してDoneすると、primary-Workflowがコピーされてstaging-Workflowが作られます
環境変数について
ステップの前に環境変数について簡単に説明します。
Env vars
通常の環境変数です。デフォルトで$MODULEなどが定義されている他、追加・削除・編集が可能です。
特定のWorkflow
内でのみ参照可能な変数も作ることができます。
Secrets
編集方法、使用方法はEnv vars
と変わりませんが、Secrets
のvalueは暗号化されて保存され、bitrise.ymlにも記述されません。従って、センシティブな情報を定義するのにピッタリです。
Slack連携URLやkeystoreのパスワードなどはEnv vars
ではなくSecrets
で管理するのが良いでしょう
ステップ
Androidのビルドに関するStep
を簡単に見ていきます。
Install missing Android SDK components
名前の通りですが、SDKをインストールするステップになります。
NDKのインストール
NDKが必要なアプリの場合にはNDKバージョンにビルドに必要なNDKバージョンを書けばOKです。
参考
Android Build
ビルドステップになります。
ステップ設定パネル下部のOptionsから、apkファイルの格納先を指定できます。
Androidライブラリをビルドする場合にはapkではなくaarへのパスを指定しましょう。
Sign APK
ビルドアップステップで作成したapkに署名をするステップです。
署名の方法には複数の種類があるので、お好みの方法で実装してください。
Variantごとに異なる署名をしたい
実は、上記の方法ではアップロードできるkeystoreファイルは1つだけです。
debug、staging、releaseで異なる署名をすることができません困った
そんな時にはGENERIC FILE STORAGEを使います。
なおこの方法ではSign APK
ステップは不要です。
keystoreを複数アップロードし、前述したSecrets
にそれぞれのkeystoreでの署名に必要なkeystore password
やkey alias
、key password
を登録します。
さらに公式ドキュメントを参考にして、File Downloader
をBUILD APK
ステップの前に追加し、keystoreファイルを任意の場所にダウンロードしておきます。
Android Studioでbuild.gradleを開き、signing情報としてSecrets
を参照するようにします。
signingConfigs {
staging {
storeFile file(System.getenv('HOME') + '/keystore/staging.keystore')
keyPassword System.getenv('STAGING_KEYSTORE_PASS')
keyAlias System.getenv('STAGING_KEY_ALIAS')
keyPassword System.getenv('STAGING_KEY_PASS')
}
}
これでAndroid Build
ステップにて署名されたapkが生成されます
Triggerの設定
作ったWorkflowを実施するタイミングを設定します。
Trigger
はWorkflow編集画面の「Trigger」タブから設定できます
まとめ
- Bitriseではビルドステップを視覚的に作れるので、CIに不慣れでもあまりハマることなくビルドまで持っていける
- 公式ドキュメントが充実しています
- どんどんCI廻していきましょう!