[Xcode] 날짜와 카운트를 이용한 빌드 번호 스크립트

이전 글 [버전과 빌드 번호의 차이란?] 에서 올렸던
빌드 번호를 자동으로 수정해주는 스크립트를 만들었다.
사용법은 [Xcode Build Phases] -> [Run Script] 에 코드를 넣으면
빌드할 때마다 빌드 번호가 자동으로 수정된다.

#!/bin/bash
buildDay=$(/usr/libexec/PlistBuddy -c "Print buildDay" "$INFOPLIST_FILE")
buildCount=$(/usr/libexec/PlistBuddy -c "Print buildCount" "$INFOPLIST_FILE")
today=$(date +%Y%m%d)

if [ x$buildDay == x ]; then
    buildDay=${today}
    buildCount=1
    buildNumber=${buildDay}${buildCount}

    /usr/libexec/PlistBuddy -c "Add :buildDay string $buildDay" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Add :buildCount string $buildCount" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

elif [ $buildDay != $today ]; then
    buildDay=${today}
    buildCount=1
    buildNumber=${buildDay}${buildCount}

    /usr/libexec/PlistBuddy -c "Set :buildDay $buildDay" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :buildCount $buildCount" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

else
    buildCount=$(($buildCount + 1))
    buildNumber=${buildDay}${buildCount}

    /usr/libexec/PlistBuddy -c "Set :buildDay $buildDay" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :buildCount $buildCount" "$INFOPLIST_FILE"
    /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

fi

이 스크립트는 info.plist 에서 buildDay 와 buildCount 항목을 가져온다.

첫번째는 buildDay 항목이 없거나 값이 없을 경우
buildDay 항목은 오늘 날짜로 설정하고, buildCount 는 0 으로 설정한 후 항목을 추가한다.
빌드 번호는 (buildDay)(buildCount) 를 합쳐서 빌드 번호를 적용한다.

두번째는 buildDay 항목의 값이 오늘 날짜 값과 다를 경우
buildDay 항목을 오늘 날짜 값으로 설정하고, buildCount 는 1을 증가시킨 후 적용한다.
이번에도 빌드 번호는 (buildDay)(buildCount) 를 합쳐서 빌드 번호를 적용한다.

세번째는 두 가지 경우에 해당 안되는 경우인데
사실상 buildDay 항목의 값은 오늘 날짜일 경우이다.
buildCount 만 1을 증가시킨 후 적용한다.
이번에도 빌드 번호는 (buildDay)(buildCount) 를 합쳐서 빌드 번호를 적용한다.

만약 10월 20일에 빌드를 10번 돌렸다하면 빌드 번호는 2018102010 으로 세팅된다.

이걸 자동화하기 위해서 이 스크립트를 만들었다는게 기분이 좋고
처음으로 쉘스크립트로 코드를 짜서 시간이 좀 소요되긴 했지만
만들고 나니 확실히 편해진 것 같다.

Hyejun Jang

Hyejun Jang

If you do nothing, you are not alive. Just Do It!

comments powered by Disqus
rss facebook twitter github youtube mail spotify lastfm instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora quora