概要
ipaファイルが生成されたら自動でDeployGateにアップロードする方法です
準備
ファイルの監視
この方法ではファイル監視をして、ipaファイルが生成されたことを検知してdeploygateにアップロードするようにします
どんなファイル監視方法でもいいですが、ここでは最近知ったentr(1)を使ってみましょう
entr(1)では、以下のようなコマンドでファイルの監視ができます
$ ls ~/**/*.ipa | entr echo /_
これだけでホームディレクトリ以下に*.ipaが生成されたらechoでfile pathが出力されます(/_は特殊な変数でentr(1)が取得したファイルの絶対パスが入ります)
さて、この状態ですでにファイルの監視は完了です
あとはこのfile pathでdeploygateにアップロードするだけですね
deploygateへのアップロード
どんなアップロードの仕方でもいいのですが、ここではOSXのdesktop notificationを使って通知をしたいので、rubyでterminal-notifierを使ってやってみます
require 'terminal-notifier'
require 'json'
file_path = ARGV[0]
return if file_path == nil
TerminalNotifier.notify("start upload the #{file_path} to deploygate")
json = `curl -F 'file=@#{file_path}' -F 'token=your deploygate token' -F 'message=sample' https://deploygate.com/api/users/your_name/apps`
result = JSON.parse(json)
result_text = "Error: #{result['error']}, Revision: #{result['results']['revision']}"
p result_text
TerminalNotifier.notify(result_text)
普通にcurlでアップロードしてます、tokenやyour_nameについては適時書き換えてください
特にcurlな理由はないので、普通にrubyでpostするように書いてもいいと思います
ちなみに、今回curlで書いて思ったのが、これで実行するとcurlの進捗が自動で表示されるので便利だなと思いました
監視からアップロードまで
ここまででファイル監視とdeploygateへのアップロードが準備できました
あとはこれを実行するだけですね、こんな感じでできます
$ ls ~/**/*.ipa | entr ruby upload.rb /_
二つをただくっつけただけですね、シンプルです
ipaの生成をしてみる
これで、念願叶ってipaファイルが生成される度に自動でDeployGateへアップロードすることができました
実際にアップロードしてみましょう
適当なアプリをadhocでビルドして、適当なフォルダにexportしましょう
OSXのdesktop notificationが出てきて、アップロードが始まるはずです
おわりに
先日から何日か使ってますが、結構便利な気がしてます
ちなみに、ファイル監視してアップロードしてるだけなのでipaだけじゃなくて、Androidのapkでも同じことができます
以下のコマンドでどっちもカバーできるので便利ですね
$ ls ~/**/*.ipa ~/**/*.apk | entr ruby upload.rb /_