Edited at

ipaファイルが生成されたら自動でDeployGateにアップロードする

More than 3 years have passed since last update.


概要

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を使ってやってみます


upload.rb

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 /_