October 16, 2011

Автоматическое изменение номера билда в проекте Xcode

Мы, программисты, ленивые зверушки. Нам бы побольше своей работы автоматизировать. Сегодня я расскажу как я автоматизирую обновление номера билда в Xcode проекте.

Я принял что номер билда соответствует количеству коммитов в системе контроля версий и написал такой совсем маленький скриптик.

cd $SOURCE_ROOT;
NUMBER_OF_COMMITS=`git rev-list --all | wc -l`;


/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $NUMBER_OF_COMMITS" Snippets/Info.plist;

Открываем проект и в Build Phases добавляем Run Script как показано на скриншоте.

В появившееся окошко вставляем этот скрипт.

Если вам необходимо увеличить номер билда на какое-то значение (в моем случае увеличивается потому что репозиторий создавался не с самого начала работы над проектом) то добавляем такую строчку.

#...
NUMBER_OF_COMMITS=`git rev-list --all | wc -l`;
NUMBER_OF_COMMITS=$(($NUMBER_OF_COMMITS + 100));
#...

Теперь каждый коммит в БД будет содержать новый, постоянно увеличивающийся, номер билда.

Когда я писал этот скрипт я загнался вопросом что номер билда должен соответствовать количеству коммитов в ветке репозитория где этот код находится. Нет. Если мы релизим программу из ветки которая ниже чем самая высокая, то у нас не должен понижаться номер билда иначе обновление в Sparkle не пройдет. Поэтому этот номер должен всегда увеличиваться, и лучше всего это отображается в количестве всех коммитов в репозитории.