Compare commits

...

23 Commits

Author SHA1 Message Date
rzaitov 5da1a6efa0 Update and rename readme.md to readme.txt 2014-06-02 20:11:19 +04:00
rzaitov e532e485cb Rename readme.txt to readme.md 2014-06-02 20:10:40 +04:00
rzaitov c8c2a84ceb Update readme.txt 2014-06-02 20:09:58 +04:00
Rustam Zaitov 9277793568 В обобщенные шаги добавил проставление bandleid 2014-06-02 19:40:01 +04:00
Rustam Zaitov b3f5305208 Реализовал поддержку сборки с разными профилями обеспечения 2014-06-02 15:09:22 +04:00
Rustam Zaitov f7e1e7797e для сборки ios проектов всегда собирается ipa файл 2014-02-21 12:56:47 +04:00
rzaitov 5ab8823237 Update readme.txt 2014-02-21 11:27:25 +03:00
Rustam Zaitov 44a32011b8 исправлена ошибка в названии настройки короткой версии
CFShortBundleVersion заменено на CFBundleShortVersionString
2014-01-17 13:36:07 +04:00
Rustam Zaitov 83abffdf33 убрал имя файла из комманды бэкапа 2014-01-17 13:23:14 +04:00
Rustam Zaitov cad3af5a5f вернул команду восстановления из бэкапа 2014-01-17 13:12:53 +04:00
Rustam Zaitov c412b15416 Merge branch 'master' of github.com:rzaitov/BuildScript 2014-01-17 12:15:51 +04:00
Rustam Zaitov 93a6c5d111 По просьбе Антона в выходнои имени файла номер билда отделяется от номера версии дефисом а не точкой 2014-01-17 12:14:54 +04:00
rzaitov b38b1e351a Update readme.txt 2014-01-16 20:54:46 +03:00
Rustam Zaitov 707c091a8d Убрал дублирование из скриптов 2014-01-16 21:38:43 +04:00
Rustam Zaitov aa5da41bdd Обновил сэмпл настроек 2014-01-16 21:23:20 +04:00
rzaitov e2ee11fe6f Update readme.txt 2014-01-16 20:12:28 +03:00
Maxim Smirnov 78b05e7109 навел порядок с именованием артифактов 2014-01-16 20:45:33 +04:00
Maxim Smirnov 0db2b0aa39 исправил ошибку в задании app файла 2014-01-16 20:17:41 +04:00
Maxim Smirnov 896ffc7af6 Задаем название app файла 2014-01-16 20:03:20 +04:00
Rustam Zaitov 4309cedffb убрал ошибку хардкодинга константы 2014-01-16 19:40:29 +04:00
Rustam Zaitov 3972439ba6 Merge branch 'common-steps' 2013-12-30 17:48:47 +04:00
Rustam Zaitov 98af62bec5 Merge branch 'common-steps' 2013-12-30 16:47:41 +04:00
Rustam Zaitov 5e9c4614e1 Merge branch 'common-steps' 2013-12-30 12:42:42 +04:00
8 changed files with 65 additions and 32 deletions

View File

@ -1,32 +1,47 @@
Добавить символьную ссылку на скрипт сборки. Заменить <builder_path> на абсолютный путь к корню репозитория билд скрипта Добавить символьную ссылку на скрипт сборки. Заменить <builder_path> на абсолютный путь к корню репозитория билд скрипта
sudo ln -s <builder_path>/scripts/TouchinBuild/taskRunner.py /user/local/bin/tibuild sudo ln -s <builder_path>/scripts/TouchinBuild/taskRunner.py /usr/local/bin/tibuild
Чтобы работала система сборки необходимо выполнить формальные шаги: Чтобы работала система сборки необходимо выполнить формальные шаги:
0. Убедиться что в собираемом проекте выбор профиля обеспечения и сертификата производится автоматически. 0. [iOS] Убедиться что в собираемом проекте выбор профиля обеспечения и сертификата производится автоматически.
Так следует сделать чтобы любой разработчик мог собрать проект, на билд сервере будут подставлены необоходимы значения автоматически Так следует сделать чтобы любой разработчик мог собрать проект, на билд сервере будут подставлены необоходимы значения автоматически
1. Убедиться что в названии проекта нет пробелов. 1. [iOS, Android] Убедиться что в названии проекта нет пробелов.
1. В корне репозитория создать папку scripts 2. [iOS, Android] В корне репозитория создать папку scripts
mkdir scripts mkdir scripts
2. Положить в папку scripts профили обеспечения со следующими названиями 3. [iOS] Положить в папку scripts профили обеспечения со следующими названиями
development.mobileprovision development.mobileprovision
distribution.mobileprovision distribution.mobileprovision
2. В папке scripts создать папку settings.txt 4. [iOS, Android] В папке scripts создать файл settings.txt
touch scripts/settings.txt touch scripts/settings.txt
3. Скопировать содержимое примера scripts/common/setting.txt в свой файл settings.txt и переопределить все необходимые настройки 5. [iOS, Android] Скопировать содержимое примера scripts/common/setting.txt в свой файл settings.txt и переопределить все необходимые настройки
Стоит обратить внимание на комментации Стоит обратить внимание на комментации
# required эти настройки необходимо задать, иначе ничего не будет работать # required эти настройки необходимо задать, иначе ничего не будет работать
# dont change это можно менять если есть четкое осознание того что происходит # dont change это можно менять если есть четкое осознание того что происходит
4. вызвать скрипт, заменив параметры 6. [iOS, Android] вызвать скрипт, заменив параметры
на сервере на сервере. <builder_path> скорее всего это /BuildServer/Scripts
tibuild --settings=scripts/settings.txt build="0.0" builder_path=<builder_path> tibuild --settings=scripts/settings.txt build=%build.number% builder_path=<builder_path>
локально. path_to_local_direcotry путь к папке вне репозитория проекта (чтобы ничего не потерлось) или добавить папку в настройку локально. path_to_local_direcotry путь к папке вне репозитория проекта (чтобы ничего не потерлось) или добавить папку в настройку backup_ignore
tibuild --settings=scripts/settings.txt build="0.0" builder_path=<builder_path> publish_path=<path_to_local_direcotry> tibuild --settings=scripts/settings.txt build=777 builder_path=<builder_path> publish_path=<path_to_local_direcotry>
Пояснение значения некоторых настроек:
publish_step_type enum(development|distribution) в зависимости от этого значения будет вызван один из следующих шагов
'ios publish development.txt' копирование файла ipa в папку @publish_path/
'ios publish distribution.txt' - создание zip архива (app файла) и копирование его в папку @publish_path/
Это значение было введено чтобы поддерживать сборку с разными профилями обеспечения.
Типичный кейс. У нас 2 профайла:
development.mobileprovision сборка для наших тестировщиков [publish_step_type=development]
distribution.mobileprovision сборка для апстора [publish_step_type=distribution]
Расширенный кейс. У нас 3 профайла
development.mobileprovision сборка для наших тестировщиков [publish_step_type=development]
customer.mobileprovision сборка для тестировщиков заказчиков [publish_step_type=development]
distribution.mobileprovision сборка для апстора [publish_step_type=distribution]
bundle_id BundleId который будет подставлен в Info.Plist файл. Настройка нужна для поддержки сборки с разными профилями обсеспечеиня. Так например в профиле обеспечения предоставляемом заказчиком будет указан другой BunldeId, те не com.touchin.projectname

View File

@ -1 +1 @@
copy '{@csproj_dir}/{@output_path}/{@package_name}-Signed.apk' to '{@publish_path}/{@project_name}-{@version}-{@build}-Default.apk' copy '{@csproj_dir}/{@output_path}/{@package_name}-Signed.apk' to '{@publish_path}/{@output_file_name}'

View File

@ -1,5 +1,5 @@
#restore from backup restore from backup
#create backup for '.' create backup
<include '{@builder_path}/scripts/common/android prepare.txt'> <include '{@builder_path}/scripts/common/android prepare.txt'>
<include '{@builder_path}/scripts/common/android build.txt'> <include '{@builder_path}/scripts/common/android build.txt'>
@ -10,5 +10,5 @@ sh echo '{@teamcity_build_id}' > '{@publish_path}/../{@build}.build_id'
<include '{@builder_path}/scripts/common/android publish.txt'> <include '{@builder_path}/scripts/common/android publish.txt'>
#endif #endif
#restore from backup restore from backup
#delete backup delete backup

View File

@ -3,10 +3,13 @@ install profile 'scripts/{@provisioning_profile}.mobileprovision'
inside '{@csproj_dir}/{@csproj_file_name}' set CodesignKey to '{@provisioning_account}' for '{@sln_config}' inside '{@csproj_dir}/{@csproj_file_name}' set CodesignKey to '{@provisioning_account}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_file_name}' set CodesignProvision to '{@provisioning_uudid}' for '{@sln_config}' inside '{@csproj_dir}/{@csproj_file_name}' set CodesignProvision to '{@provisioning_uudid}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_file_name}' set OutputPath to '{@output_path}' for '{@sln_config}' inside '{@csproj_dir}/{@csproj_file_name}' set OutputPath to '{@output_path}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_file_name}' set IpaPackageName to '{@output_file_format}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_file_name}' set BuildIpa to 'true' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_file_name}' set AssemblyName to '{@project_name}' for '' inside '{@csproj_dir}/{@csproj_file_name}' set AssemblyName to '{@project_name}' for ''
inside '{@csproj_dir}/Info.plist' set CFBundleIdentifier to '{@bundle_id}'
inside '{@csproj_dir}/Info.plist' set CFBundleVersion to '{@version}.{@build}' inside '{@csproj_dir}/Info.plist' set CFBundleVersion to '{@version}.{@build}'
inside '{@csproj_dir}/Info.plist' set CFShortBundleVersion to '{@version}' inside '{@csproj_dir}/Info.plist' set CFBundleShortVersionString to '{@version}'
inside '{@sln_path}' remove '{@remove_project}' project inside '{@sln_path}' remove '{@remove_project}' project
clean '{@sln_path}' for '{@sln_config}' clean '{@sln_path}' for '{@sln_config}'

View File

@ -1 +1 @@
copy '{@csproj_dir}/{@output_path}/{@project_name}-{@version}.{@build}.ipa' to '{@publish_path}/{@project_name}-{@version}-{@build}-Default.ipa' copy '{@csproj_dir}/{@output_path}/{@output_file_format}.ipa' to '{@publish_path}/{@output_file_name}'

View File

@ -1,2 +1,2 @@
sh rm -f '{@publish_path}/{@project_name}-{@version}-{@build}-AppStore.zip' sh rm -f '{@publish_path}/{@output_file_name}'
sh cd '{@csproj_dir}/{@output_path}' && zip -y -r '{@publish_path}/{@project_name}-{@version}-{@build}-AppStore.zip' 'PenoplexiOS.app' sh cd '{@csproj_dir}/{@output_path}' && zip -y -r '{@publish_path}/{@output_file_name}' '{@csproj_name}.app'

View File

@ -1,5 +1,5 @@
#restore from backup restore from backup
#create backup for '.' create backup
<include '{@builder_path}/scripts/common/ios prepare.txt'> <include '{@builder_path}/scripts/common/ios prepare.txt'>
<include '{@builder_path}/scripts/common/ios build.txt'> <include '{@builder_path}/scripts/common/ios build.txt'>
@ -7,8 +7,8 @@
#if {@teamcity_build_id} #if {@teamcity_build_id}
create dirs '{@publish_path}' create dirs '{@publish_path}'
sh echo '{@teamcity_build_id}' > '{@publish_path}/../{@build}.build_id' sh echo '{@teamcity_build_id}' > '{@publish_path}/../{@build}.build_id'
<include '{@builder_path}/scripts/common/ios publish {@provisioning_profile}.txt'> <include '{@builder_path}/scripts/common/ios publish {@publish_step_type}.txt'>
#endif #endif
#restore from backup restore from backup
#delete backup delete backup

View File

@ -1,12 +1,14 @@
# global settings # global settings
teamcity_build_id = '0' teamcity_build_id = '0'
# Будет переопределено teamcity # Обновляйте это поле руками, когда выходит новая версия приложения
version = '0.0' version = '0.0'
# Будет переопределено teamcity. например так build=%build.number%
build = '0' build = '0'
build_tool = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool' build_tool = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool'
project_name = '' # required for build server infastructure project_name = '' # required for build server infastructure
# required!!! обратите внимание на регистр папки builds на некоторых проектах название с большой буквы, а на некоторых с маленькой
publish_path = '/BuildServer/{@project_name}/builds/{@publish_name}' publish_path = '/BuildServer/{@project_name}/builds/{@publish_name}'
# добавьте названия папок или файлов которые не надо бэкапить перед сборкой конфигурации # добавьте названия папок или файлов которые не надо бэкапить перед сборкой конфигурации
@ -20,10 +22,12 @@ configs = 'default_ios, appstore, default_android, googleplay'
# следует перенести в ios и android конфигурации # следует перенести в ios и android конфигурации
sln_path = '' sln_path = ''
csproj_file_name = '{@csproj_name}.csproj' # dont change # dont change
csproj_file_name = '{@csproj_name}.csproj'
# эта настройка нужна для единообразия названий билдов
output_file_format = '{@project_name}-{@version}-{@build}'
# required # required
ios.provisioning_uudid = '' # Можно использовать пробел для режима Automatic
ios.csproj_dir = '' ios.csproj_dir = ''
ios.csproj_name = '' # только имя проекта, обычно имя файла без расширения ios.csproj_name = '' # только имя проекта, обычно имя файла без расширения
ios.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене) ios.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене)
@ -32,15 +36,26 @@ ios.sln_config = 'Release|iPhone'
ios.steps = '{@builder_path}/scripts/common/ios.txt' ios.steps = '{@builder_path}/scripts/common/ios.txt'
ios.output_path = 'bin' ios.output_path = 'bin'
ios.publish_name = 'iPhone' ios.publish_name = 'iPhone'
ios.provisioning_account = 'iPhone Developer: Build Server (GZRT3GYURD)' #Билд сервер собирает с помощью разработчика Build Server
ios.default_ios.provisioning_profile = 'development' # dont change ios.default_ios.provisioning_profile = 'development' # required. Имя файла профиля обеспечения без разширерия (development.mobileprovision)
ios.appstore.provisioning_profile = 'distribution' # dont change ios.default_ios.publish_step_type = 'development' # required. Enum (appstore|distribution)
ios.default_ios.bundle_id = '' # required. Обычно это com.touchin.projectname
ios.default_ios.provisioning_account = 'iPhone Developer: Build Server (GZRT3GYURD)' #Билд сервер собирает с помощью разработчика Build Server
ios.default_ios.provisioning_uudid = '' # required. Можно использовать пробел для режима Automatic
ios.default_ios.output_file_name = '{@output_file_format}-Default.ipa'
ios.appstore.provisioning_profile = 'distribution' # required. Имя файла профиля обеспечения без разширерия (distribution.mobileprovision)
ios.appstore.publish_step_type = 'distribution' # required. Enum (appstore|distribution)
ios.appstore.bundle_id = '' # required. Обычно это com.touchin.projectname
ios.appstore.provisioning_account = 'iPhone Distribution' # dont change. На билд сервере всего один distribution сертификат Ltd Touchinstinct он и будет выбран
ios.appstore.provisioning_uudid = '' # required. Можно использовать пробел для режима Automatic
ios.appstore.output_file_name = '{@output_file_format}-AppStore.zip'
# required # required
android.csproj_dir = '' android.csproj_dir = ''
android.csproj_name = '' # только имя проекта, обычно имя файла без расширения android.csproj_name = '' # только имя проекта, обычно имя файла без расширения
android.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене) android.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене)
android.output_file_name = '{@output_file_format}-Default.apk'
# dont change # dont change
android.sln_config = 'Release' # Нельзя указывать платформу(Release|AnyCPU). Иначе приложение не будет подписано android.sln_config = 'Release' # Нельзя указывать платформу(Release|AnyCPU). Иначе приложение не будет подписано
android.steps = '{@builder_path}/scripts/common/android.txt' android.steps = '{@builder_path}/scripts/common/android.txt'