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`

コメントを残す

メールアドレスが公開されることはありません。