Edited at

更新があった場合のみに実行されるlaneを作る

fastlaneを利用して継続的デリバリを行ううえで,特に更新が無ければビルド・デリバリを行わないようにしたかったので,お手軽な方法で実現してみました.

まずはコミットの有無を判定する以下のようなスクリプトを用意します.


checkNeedsToDailyBuild.sh

#!/bin/bash

# 直近24時間のコミット情報
COMMITS_IN_LAST_24_HOURS=$(git log --pretty=%h --since="24 hours ago")

if [ -z "${COMMITS_IN_LAST_24_HOURS}" ] ; then
# No commits exist
echo -n "false"
else
# Some commits exist
echo -n "true"
fi

exit 0


そのうえで,laneは次のように設定しておきます.


Fastfile

lane :deploy_only_update_exists do

res = sh "./checkNeedsToDailyBuild.sh"
if res == "true" then
UI.message("Some updates exist")
# ...
# ビルド・デプロイ処理
# ...
else
UI.message("No updates")
end
end

CI自体のスケジューリングを使ったり,last_git_commitの情報で判定したり,…とやり方はいろいろあるとは思いますが,スクリプトに分けておけば時間以外にも条件等の設定もしやすいかなと思ってこのような形にしています.(と言いつつ今回はやってませんが…)

もしもっといいやり方があればコメントいただけると幸いです.