Merge branch 'common-steps'

This commit is contained in:
Rustam Zaitov 2013-12-30 16:47:41 +04:00
commit 98af62bec5
6 changed files with 94 additions and 12 deletions

32
readme.txt Normal file
View File

@ -0,0 +1,32 @@
Добавить символьную ссылку на скрипт сборки. Заменить <builder_path> на абсолютный путь к корню репозитория билд скрипта
sudo ln -s <builder_path>/scripts/TouchinBuild/taskRunner.py /user/local/bin/tibuild
Чтобы работала система сборки необходимо выполнить формальные шаги:
0. Убедиться что в собираемом проекте выбор профиля обеспечения и сертификата производится автоматически.
Так следует сделать чтобы любой разработчик мог собрать проект, на билд сервере будут подставлены необоходимы значения автоматически
1. Убедиться что в названии проекта нет пробелов.
1. В корне репозитория создать папку scripts
mkdir scripts
2. Положить в папку scripts профили обеспечения со следующими названиями
development.mobileprovision
distribution.mobileprovision
2. В папке scripts создать папку settings.txt
touch scripts/settings.txt
3. Скопировать содержимое примера scripts/common/setting.txt в свой файл settings.txt и переопределить все необходимые настройки
Стоит обратить внимание на комментации
# required эти настройки необходимо задать, иначе ничего не будет работать
# dont change это можно менять если есть четкое осознание того что происходит
4. вызвать скрипт, заменив параметры
на сервере
tibuild --settings=scripts/settings.txt build="0.0" builder_path=<builder_path>
локально. path_to_local_direcotry путь к папке вне репозитория проекта (чтобы ничего не потерлось) или добавить папку в настройку
tibuild --settings=scripts/settings.txt build="0.0" builder_path=<builder_path> publish_path=<path_to_local_direcotry>

View File

@ -1,5 +1,5 @@
inside '{@csproj_dir}/{@csproj_path}' set OutputPath to '{@output_path}' for '{@sln_config}|AnyCPU'
inside '{@csproj_dir}/{@csproj_path}' set AssemblyName to '{@project_name}' for ''
inside '{@csproj_dir}/{@csproj_name}' set OutputPath to '{@output_path}' for '{@sln_config}|AnyCPU'
inside '{@csproj_dir}/{@csproj_name}' set AssemblyName to '{@project_name}' for ''
inside '{@csproj_dir}/Properties/AndroidManifest.xml' set package to '{@package_name}'
inside '{@csproj_dir}/Properties/AndroidManifest.xml' set android:versionName to '{@version}.{@build}'

View File

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

View File

@ -1,9 +1,9 @@
install profile 'scripts/{@provisioning_profile}.mobileprovision'
inside '{@csproj_dir}/{@csproj_path}' set CodesignKey to '{@provisioning_account}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_path}' set CodesignProvision to '{@provisioning_profile}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_path}' set OutputPath to '{@output_path}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_path}' set AssemblyName to '{@project_name}' for ''
inside '{@csproj_dir}/{@csproj_name}' set CodesignKey to '{@provisioning_account}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_name}' set CodesignProvision to '{@provisioning_uudid}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_name}' set OutputPath to '{@output_path}' for '{@sln_config}'
inside '{@csproj_dir}/{@csproj_name}' set AssemblyName to '{@project_name}' for ''
inside '{@csproj_dir}/Info.plist' set CFBundleVersion to '{@version}.{@build}'
inside '{@csproj_dir}/Info.plist' set CFShortBundleVersion to '{@version}'

View File

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

View File

@ -0,0 +1,50 @@
# global settings
teamcity_build_id = '0'
# Будет переопределено teamcity
version = '0.0'
build = '0'
build_tool = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool'
project_name = '' # required for build server infastructure
publish_path = '/BuildServer/{@project_name}/builds/{@publish_name}'
# добавьте названия папок или файлов которые не надо бэкапить перед сборкой конфигурации
# это может быть папка куда складываются артефакты или служебная папка системы контроля версий
backup_ignore = .git, .gitignore, .DS_Store, backup, Artifacts, scripts, settings.txt, ios.txt
# укажите через запятую конфигурации которые необходимо собрать
configs = 'default_ios, appstore, default_android, googleplay'
# required. Возможно для IOs и Android созданы разные sln файлы, тогда эту настройку
# следует перенести в ios и android конфигурации
sln_path = ''
# required
ios.provisioning_uudid = '' # Можно использовать пробел для режима Automatic
ios.csproj_dir = ''
ios.csproj_name = ''
ios.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене)
# dont change
ios.sln_config = 'Release|iPhone'
ios.steps = '{@builder_path}/scripts/common/ios.txt'
ios.output_path = 'bin'
ios.publish_name = 'iPhone'
ios.provisioning_account = 'iPhone Developer: Build Server (GZRT3GYURD)' #Билд сервер собирает с помощью разработчика Build Server
ios.default_ios.provisioning_profile = 'development' # dont change
ios.appstore.provisioning_profile = 'distribution' # dont change
# required
android.csproj_dir = ''
android.csproj_name = ''
android.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене)
# dont change
android.sln_config = 'Release|AnyCPU'
android.steps = '{@builder_path}/scripts/common/android.txt'
android.output_path = 'bin'
android.publish_name = 'Android'
android.version_code = '{@build}' # Возможно стоит переопределить значения в конкректных конфигурациях
android.default_android.package_name = '' #required
android.googleplay.package_name = '' #required