Travis CIを使ってAndroidビルドを試してみた

CI環境をいくつか比較してみようと思います。
主な対象はモバイルアプリのビルド環境なのですが、まずはTravis CIから。

対象はAndroidです。
記載内容は、基本的には公式ドキュメントを参考にしています。
ほぼ、Androidについてくるサンプルプロジェクトと同じようなレベルのものを使用しています。

.travis.yml

以下が、実際にプロジェクトをビルドした設定ファイルです。
branchによる、ビルド対象の指定、before_installなどを使い、特定のタイミングで、特定の環境を構築するなどが可能です。

language: android
android:
  components:
    - build-tools-19.1.0
    - android-19
    - sysimg-19
    - extra-android-support
  licenses:
    - android-sdk-license-5be876d5 # new license!
    - '.*intel.+'

branches:
  only:
    - master

before_install:
  - android list sdk --no-ui --all --extended

script:
  - ./gradlew assembleDebug

#after_success:
#  - 成果物のapkを、特定のURLへアップロードする。
#  => apkは、常に保存しておけるわけではない。特定の領域に保存する、という対応が必要。

また、設定でGitHubとの連携が可能なのですが、その場合、GitHubのHook & ServiceにTravis用のサービスが追加され、push/pull_requestのイベントに対して何らかの対応を実施することができるようになります。

つまづいた点

1つ、つまづいた点があります。少し前、Android SDKのlicensesが更新されたタイミングがあり、公式ドキュメントに記載されていた通りではライセンス情報が古くてビルドに失敗する、ということが確認されました。ここに記載しているライセンスなら、ブログ投稿時点なら大丈夫でした。

ビルド時に何らかのsecret keyを使いたい場合

要望として、secret keyをビルド時に使うこともあるかと思います。
その場合、こちらを参考にすると、travis.ymlの中で暗号化された形で同keyを指定、使用することができます。

詳細はURLを参照するとして、簡単な使い方は以下。

  • Travisコマンドを使えるようにする
$ gem install travis
  • 暗号化する
$ travis encrypt 'KEY=secure_key'
Please add the following to your .travis.yml file:

  secure: "emcrypted key"

Pro Tip: You can add it automatically by running with --add.
  • 使用する
    • 例えば、以下のように設定すると・・・
env:
  global:
    - secure: "emcrypted key"

以下のように暗号化した値を以下のように環境変数と同じ値として扱うことができるようになります。

secure_key = ENV['KEY']

感想

特定のライブラリや必要な環境をインストールできる所、それぞれの時点で必要なスクリプトなりを実施できるところはかなり使いやすい。プライベートリポジトリでも同様に使えるとして、例えばGitHub Enterpriseな環境でつなぎ合わせる方法をどうするのか、という所が気になる。

GitHub Enterpriseな環境ではつなぎ込む方法が無い、というのであれば、いろいろ考えないといけないかもれいない・・・例えば、社内ライブラリをinstallの段階でsubmoduleとして取得するときなんか、外部からたどることができる処理を入れる必要がでてくると、それはいろいろ手間になりそう・・・

Travis CIを使ってAndroidビルドを試してみた」への1件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中