iOSアプリ Provisioning Profileから有効期限切れを見つけるShell Scriptを組んでみる
iOSアプリのリリースに必要なDistribution(配布用)証明書は有効期限があるため、
これの更新を忘れるとビルドしたときにあたふたしちゃいますよね?
そんなことないようにShell Scriptを作って期限切れを定期的にCIでチェックすると
漏れがないのかなぁということで作ってみました。
Provisioning Profileから有効期限を取得する
とりあえずできることとすれば
* Provisioning Profile(mobileprovision)より有効期限を取得
* gdateを利用し、日時をフォーマット
* 現在時刻から何日あるかをチェック
というシンプルなもの
Provisioning Profileは~/Library/MobileDevice/Provisioning Profiles/${UUID}.mobileprovisionに存在するので、チェックしたいプロビジョニングは先んじてチェックしPROVISIONING_PROFILEにセットすること(Mac環境)
gdateは日付のフォーマットのために利用するため下記のようにインストールしておく必要があります。
brew install coreutils
よければご参考にしてください
PROVISIONING_PROFILE=***-***-***-***-***-*** HOME_DIRECTORY=~ ## provisioningの場所 PROVISIONING_PROFILE_PATH="${HOME_DIRECTORY}/Library/MobileDevice/Provisioning Profiles/${PROVISIONING_PROFILE}.mobileprovision" DATE_FORMAT="%Y-%m-%d %H:%M:%S" EXPIRE_DATE_STR=`security cms -D -i "${PROVISIONING_PROFILE_PATH}" > /tmp/tmp.plist && /usr/libexec/PlistBuddy -c 'Print DeveloperCertificates:0' /tmp/tmp.plist | openssl x509 -inform DER -noout -enddate | sed -e "s/^.*=\(.*\)$/\1/"` EXPIRE_DATE=`gdate -d "${EXPIRE_DATE_STR}" "+${DATE_FORMAT}"` EXPIRE_TIME=`date -j -f "${DATE_FORMAT}" "${EXPIRE_DATE}" +%s` CURRENT_TIME=`date +%s` DIFF=`expr $EXPIRE_TIME - $CURRENT_TIME` DIFF_DAYS=`expr $DIFF / 60 / 60 / 24`