Deploygateで自動Deplopyする
CIツールを使ってDeployが理想だけど都合上そうもいかないしローカル環境でなんとかしたいという方向けです。
もっと良いやり方があると思いますのでコメントいただければ幸いです。
前提条件
- iOSアプリの配布(Androidも参考程度にはなるかも...)
- gitを利用している
- Fastlaneを利用している
- Deploygateを利用している
やりかた
PCにログインしたときに自動でデプロイするシェルスクリプト実行できるようにするだけです。
FastfileにDeploygateに配布する用のlaneを記述
こちらはFastlaneを利用している前提ですので導入の仕方など細かな説明は省きます。
詳しく知りたい方はfastlane公式ドキュメントを参照ください
Fastfile
desc "Deploygateにアップロード"
lane :dg do
gym(
workspace: 'xxxxxxxx.xcworkspace',
scheme: 'スキーム名',
configuration: 'コンフィグレーション名',
export_method: "ad-hoc",
clean: true
)
deploygate(
api_token: 'API Keyを記述',
user: 'ユーザ名',
message: last_git_commit[:message]
)
end
Automatorアプリケーションでの設定
1.Automator を起動します
- 書類の種類はアプリケーションを選択します。
- 左側のタブに検索窓があるのでシェルスクリプトと検索します
-
シェルスクリプトを実行が出てくると思うので右側のウインドにドラッグ&ドロップします。
以下のシェルスクリプトを記述して保存します
#!/bin/bash
# リモートのmasterブランチとローカルのmasterブランチの差分があったらpullしてきてdeployします
cd [プロジェクトまでのパス]
diff=$(git diff origin/master master)
if [ -n "$diff" ]; then
git pull origin master master
bundle exec fastlane dg
fi
保存することで上記のシェルスクリプトをアプリケーション化できます。
アプリケーション化をすることはできたのでダブルクリックするとDeploy自体は用意にできるようにはなりました。
ログイン時に自動でDeployする設定
- macの システム環境設定 を開きます。
-
ユーザとグループ を選択します
-
ログイン項目 を選択します
-
+ ボタンから先ほどAutomatorで作成し保存したアプリケーションを追加します
以上で設定は完了です。
あとがき
シェルスクリプトでbundlerを利用しているのですが、
rbenvでrubyバージョンを管理している方はbundlerのパスが通っていないよと怒られるかもしれません。
その際はシェルスクリプトの方でパスを通してあげる必要があると思います。
各自bash_profileなどで設定しているパスを通してあげてください。
シェルの実行トリガーをログイン時ではなくリモートブランチと差分が生まれた瞬間pullしてdeployしてほしかったのですが、うまい方法が見つけられませんでした。