WerckerでAndroidアプリをビルドしてみた

前回のTravisに続き、Wercker, でAndroidアプリをビルドしてみた。ビルド対象のアプリは同じものを使用。Werkerに登録を行い Add and applicationを選択すると、GitHub Repositoryの登録から、ビルドスクリプトの作成、実施までトントン進んだ。ざっと、作業自体10分程度で終わったのだけれど、以下に作業内容をつらつらと書く。

WerckerにはBoxとかもろもろの概念があるのですが、ここではそこら編はここでは言及していないです。

リポジトリの登録〜成果物ができるまで、後少し他を書いたくらいの内容です。

リポジトリの登録

以下のように、まずはgithubを接続する所からはじまる。

接続を終えると、ビルド対象となるRepositoryの選択があるのですが、そこは選択すればOK

WerckerBotの登録

CollaboratorにWerckerBotを登録する必要があるそうです。これ、Private Repository使う場合には少し嫌ですね・・・

登録時

buildスクリプトの自動生成

ここまで進めると、以下のようにリポジトリを解析して作成してくれた。
Travisよりも取っ付きやすい、というか、解析するとかすごい。

cbox: wercker/android
# Build definition
build:
  # The steps that will be executed on build
  steps:
    - script:
        name: show base information
        code: |
          gradle -v
          echo $ANDROID_HOME
          echo $ANDROID_SDK_VERSION
          echo $ANDROID_BUILD_TOOLS
          echo $ANDROID_UPDATE_FILTER
          echo $ANDROID_NDK_HOME
    # A step that executes `gradle build` command
    - script:
        name: run gradle
        code: |
          gradle --full-stacktrace -q --project-cache-dir=$WERCKER_CACHE_DIR build

このテキストをまるっとコピーして、ビルドするRepositoryにwercker.ymlとして保存、add & pushして次に進む。

ビルド準備完了

ここまでくると、下準備完了。
Wecker、作成したアプリも公開(Public)にする場合、いろいろWeckerのサービスに乗っかることができるらしいのですが、今回はPrivateな形で実施してみた。
Publicにする場合、以下のチェックをいれると、例えば後に説明するDeploy先として、Werckerのパブリックディレクトリにアプリをアップできるとか。

ビルド開始

ビルド終了

以下のような形でタスクが進んでいく。
それぞれの項目を選択すると、それぞれのLogの中身も確認できる。

Deploy

成果物の配布は、以下のようにDeployとしてターゲットを設定して進めるよう。
いくつか選択肢があり、Herokuなどの外部サービスに接続できる設定もある。(Webサービスとの親和性よさそう)
Androidはアプリのバイナリを受け取りたいが、選択肢の1つであるWercker Directoryを使うにはアプリをPublicに公開する必要があるそうな。

ただ、そうしたくない場合もある人向けに、Customr targetというものが用意されている。

↓がCustom target。
Werckerが提供するサンプルでは、Testflightを使ってからの配布方法が書かれていた。
SSHコネクションもはれるようで、特定の領域にSSHコネクションはって、アプリをアップロードするというようなこともできそう。ここは柔軟性あって良いなと思う。

api_keyの利用

アプリをビルドする上では、やはりapi_keyを指定してStoreから配布する成果物を作りたいときもありますよね。その場合は以下のように環境変数で与えることができる模様。repositoryには環境変数を参照するように書いておき、werckerのbox環境の中にapi_keyを設置しておく、ということでしょう。

You can use environment variables in your wercker.yml by just writing $ENVIRONMENT_VARIABLE. We’ll call our environment variable VERSIONING_API_KEY. So combining the step with the additional parameters for the build, your wercker file will end up looking like this:

box: wercker/android
# Build definition
build:
  # The steps that will be executed on build
  steps:
    - flenter/generate-version:
        api_key: $VERSIONING_API_KEY
        username: admin
        for_app: 2
    - script:
        name: run gradle robolectric
        code: |
          gradle robolectric -i --project-cache-dir=$WERCKER_CACHE_DIR
    - script:
        name: run gradle build
        code: |
          gradle build --full-stacktrace --project-cache-dir=$WERCKER_CACHE_DIR build -PversionCode=$GENERATED_BUILD_NR -PversionName=1.0.$GENERATED_BUILD_NR

Support Libraryの利用

以下のような形で、Support Librariesも設定できる模様。
※動作確認はしていないです。

cbox: wercker/android
# Build definition
build:
  # The steps that will be executed on build
  steps:
    - script:
        name: show base information
        code: |
          gradle -v
          echo $ANDROID_HOME
          echo $ANDROID_SDK_VERSION
          echo $ANDROID_BUILD_TOOLS
          echo $ANDROID_UPDATE_FILTER
          echo $ANDROID_NDK_HOME
    # A step that executes `gradle build` command
    - script:
        name: run gradle
        code: |
          gradle --full-stacktrace -q --project-cache-dir=$WERCKER_CACHE_DIR build
    - android-sdk-update:
        filter: platform-tools,build-tools-19.1.0,extra-android-m2repository,extra-google-m2repository

Private Repository

一応、Private Repositoryに関しての記述もありました。
http://blog.wercker.com/2013/12/03/Using-private-repos.html
ただし、今はまだ本格的に取りかかっていない?

最後に

ざっとビルドまでの手順を踏んで、少し使ってみたのですが、OpenSource系プロジェクト以外のプロジェクトでは、少し利用に抵抗ありそう。企業のCIツールの1つとして使えるか、とぱっと言われると、今はまだプライベートな環境に対する配慮や対応が行き届いていなさそうなので、厳しそう。

ただ、BoxやStepなどの要素を組み合わせてDeploy Pipelineを自由にくむことができる環境は、自分たちにあった環境を作ることができるのでエンジニアは自分好みの環境にできそうで、使いやすそう。

あ、Wercker、コマンドラインのインタフェース提供しているらしいですよ。私は試してないですが。
http://devcenter.wercker.com/articles/gettingstarted/cli.html

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中