Umi Uyuraのブログ

プログラミング関連の作業ログ

DeployGateへpushするTitanium CLIプラグイン ti-deploygate-hook を作った

旧TestFlightのサービスが完全に終了してしまいましたが、新TestFlightはまだ制約が多い感じなのと、そもそもAndroidが除外されてしまったこともあり、現状アプリのベータ版配布サービスとしてはDeployGateをメインで使っています。

そこで、Titanium CLIでビルドした際にDeployGateへのPUSHまでできるように、プラグインを作ってみました。

umi-uyura/ti-deploygate-hook

こちらの記事 を参考にしつつ、Androidの対応とメッセージの付与ができるようにしています。

また、プラグイン開発の土台として、テンプレートとなるプロジェクト appcelerator/titanium-cli-plugin-boilerplate が公開されていたので、これを利用して作りました。

前提条件

dgate コマンドを利用しますので、RubyGemsから導入しておいてください。

$ [sudo] gem install dgate

インストール

導入方法として、以下の2つの方法がありますので、好みによって選んでください。

  1. 全てのプロジェクトで使えるようにグローバルにインストールする
  2. 特定のプロジェクトだけで使えるように、プロジェクトのローカルにインストールする

1. グローバルにインストールする場合

とりあえずGitHubから。sudoは必要に応じて付けてください。

$ [sudo] npm i -g umi-uyura/ti-deploygate-hook
ti-deploygate-hook hook installed

※2015/04/06追記 npmに登録してみた ので、以下のやり方でもインストールできるはずです。

$ [sudo] npm install -g ti-deploygate-hook
ti-deploygate-hook hook installed

ti-deploygate-hook hook installed というメッセージが表示されれば成功です。 Titanium CLIのhookに登録できています。

もし出力されない場合は、コマンドを直接打ち込んでみてください。

$ ti-deploygate-hook

上記のメッセージが表示されれば大丈夫だと思います。

2. プロジェクトのローカルにインストールする場合

この場合、GitHubから プラグインのZIPファイル をダウンロードしてきて、プロジェクト直下に展開・配置します。

フォルダ構成としては、

<project root>
  + plugins
    + ti-deploygate-hook

のようになります。

次に、 tiapp.xml<plugins><plugin version="1.0">ti-deploygate-hook</plugin> を追加します。

具体的には、以下のようにします。

<plugins>
  ...
  <plugin version="1.0">ti-deploygate-hook</plugin>
  ...
</plugins>

正しくインストールできているかは、 $ titanium plugin を実行するとわかるようです。

$ titanium plugin
Titanium Command-Line Interface, CLI version 3.4.2, Titanium SDK version 3.5.1.GA
Copyright (c) 2012-2015, Appcelerator, Inc.  All Rights Reserved.

Please report bugs to http://jira.appcelerator.org/

Project CLI Plugins
ti-deploygate-hook
  Version    = unknown
  Location   = /Users/oreore/workspace/DemoProject/plugins/ti-deploygate-hook
  Commands   = No commands found
  Hooks      = deploygate-hook

...

このように、ti-deploygate-hookが認識されていれば使えると思います。

使い方

事前準備

あらかじめ、 $ dgate login を実行して、DeployGateへログインしておいてください。

現状、ログインしていない状態で実行すると処理が止まってしまいます…

$ dgate login

ログインしているかわからないときは、とりあえず dgate login を叩くと、未ログインの場合はメールアドレスとパスワードを聞かれ、ログイン済みの場合は何もせず処理が終了するようです。

dgate 1.0.2 にて確認

DeployGateへPUSH

正しくインストールされていれば、 titanium build 時に --dgate フラグを付与することで、ビルド完了時にプラグインdgate コマンドを呼び出して、DeployGateへPUSHします。

$ titanium build -p ios --target device --dgate

PUSH時にメッセージを付与したい場合は、 --dgate フラグに続けてメッセージを入力してください。

$ titanium build -p ios --target device --dgate 'Uploaded from ti-deploygate-hook.'

上記2つはプラットフォームがiOSの想定ですが、Androidでも同様に動作するはずです。

$ titanium build -p android --target device --dgate 'Uploaded from ti-deploygate-hook.'

DeployGateへ送るときには端末へ送る必要はないと思いますので、上記の例に加えて -b (--build-only) フラグを付けて実行するのも良いと思います。

注意事項

私がMacでしか開発をしていないため、現状Mac上でしか動作確認していません。

パスの処理を見なおせばWindowsでも使えるような気がするので、あとで手を入れてみます。

参考