Compare commits

..

No commits in common. "master" and "BS-52" have entirely different histories.

13 changed files with 3 additions and 176 deletions

View File

@ -1,47 +0,0 @@
Добавить символьную ссылку на скрипт сборки. Заменить <builder_path> на абсолютный путь к корню репозитория билд скрипта
sudo ln -s <builder_path>/scripts/TouchinBuild/taskRunner.py /usr/local/bin/tibuild
Чтобы работала система сборки необходимо выполнить формальные шаги:
0. [iOS] Убедиться что в собираемом проекте выбор профиля обеспечения и сертификата производится автоматически.
Так следует сделать чтобы любой разработчик мог собрать проект, на билд сервере будут подставлены необоходимы значения автоматически
1. [iOS, Android] Убедиться что в названии проекта нет пробелов.
2. [iOS, Android] В корне репозитория создать папку scripts
mkdir scripts
3. [iOS] Положить в папку scripts профили обеспечения со следующими названиями
development.mobileprovision
distribution.mobileprovision
4. [iOS, Android] В папке scripts создать файл settings.txt
touch scripts/settings.txt
5. [iOS, Android] Скопировать содержимое примера scripts/common/setting.txt в свой файл settings.txt и переопределить все необходимые настройки
Стоит обратить внимание на комментации
# required эти настройки необходимо задать, иначе ничего не будет работать
# dont change это можно менять если есть четкое осознание того что происходит
6. [iOS, Android] вызвать скрипт, заменив параметры
на сервере. <builder_path> скорее всего это /BuildServer/Scripts
tibuild --settings=scripts/settings.txt build=%build.number% builder_path=<builder_path>
локально. path_to_local_direcotry путь к папке вне репозитория проекта (чтобы ничего не потерлось) или добавить папку в настройку backup_ignore
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

@ -9,10 +9,11 @@ inside 'BuildSample/DroidApp/Properties/AndroidManifest.xml' set android:version
inside 'BuildSample/DroidApp/Properties/AndroidManifest.xml' set android:versionName to '1.2.3' inside 'BuildSample/DroidApp/Properties/AndroidManifest.xml' set android:versionName to '1.2.3'
clean 'BuildSample/BuildSample.sln' for '{@sln_config}' clean 'BuildSample/BuildSample.sln' for '{@sln_config}'
sign android 'BuildSample/BuildSample.sln' for '{@sln_config_build}' project 'DroidApp' build 'BuildSample/BuildSample.sln' for '{@sln_config}'
sign android 'BuildSample/BuildSample.sln' for '{@sln_config}' project 'DroidApp'
create dirs 'Output/GooglePlay/Artifacts' create dirs 'Output/GooglePlay/Artifacts'
sh cp BuildSample/DroidApp/Output/*.apk Output/GooglePlay/Artifacts copy 'BuildSample/DroidApp/Output/*.apk' to 'Output/GooglePlay/Artifacts'
sh cp -a BuildSample/DroidApp/Output/ Output/GooglePlay/ sh cp -a BuildSample/DroidApp/Output/ Output/GooglePlay/
restore from backup restore from backup

View File

@ -1,2 +0,0 @@
build '{@sln_path}' for '{@sln_config}'
sign android '{@sln_path}' for '{@sln_config}' project '{@csproj_name}'

View File

@ -1,9 +0,0 @@
inside '{@csproj_dir}/{@csproj_file_name}' set OutputPath to '{@output_path}' for '{@sln_config}|AnyCPU'
inside '{@csproj_dir}/{@csproj_file_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}'
inside '{@csproj_dir}/Properties/AndroidManifest.xml' set android:versionCode to '{@version_code}'
inside '{@sln_path}' remove '{@remove_project}' project
clean '{@sln_path}' for '{@sln_config}'

View File

@ -1 +0,0 @@
copy '{@csproj_dir}/{@output_path}/{@package_name}-Signed.apk' to '{@publish_path}/{@output_file_name}'

View File

@ -1,14 +0,0 @@
restore from backup
create backup
<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}/scripts/common/android publish.txt'>
#endif
restore from backup
delete backup

View File

@ -1 +0,0 @@
build '{@sln_path}' for '{@sln_config}'

View File

@ -1,15 +0,0 @@
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 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 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}/Info.plist' set CFBundleIdentifier to '{@bundle_id}'
inside '{@csproj_dir}/Info.plist' set CFBundleVersion to '{@version}.{@build}'
inside '{@csproj_dir}/Info.plist' set CFBundleShortVersionString to '{@version}'
inside '{@sln_path}' remove '{@remove_project}' project
clean '{@sln_path}' for '{@sln_config}'

View File

@ -1 +0,0 @@
copy '{@csproj_dir}/{@output_path}/{@output_file_format}.ipa' to '{@publish_path}/{@output_file_name}'

View File

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

View File

@ -1,14 +0,0 @@
restore from backup
create backup
<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}/scripts/common/ios publish {@publish_step_type}.txt'>
#endif
restore from backup
delete backup

View File

@ -1,67 +0,0 @@
# global settings
teamcity_build_id = '0'
# Обновляйте это поле руками, когда выходит новая версия приложения
version = '0.0'
# Будет переопределено teamcity. например так build=%build.number%
build = '0'
build_tool = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool'
project_name = '' # required for build server infastructure
# required!!! обратите внимание на регистр папки builds на некоторых проектах название с большой буквы, а на некоторых с маленькой
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 = ''
# dont change
csproj_file_name = '{@csproj_name}.csproj'
# эта настройка нужна для единообразия названий билдов
output_file_format = '{@project_name}-{@version}-{@build}'
# required
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.default_ios.provisioning_profile = 'development' # required. Имя файла профиля обеспечения без разширерия (development.mobileprovision)
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
android.csproj_dir = ''
android.csproj_name = '' # только имя проекта, обычно имя файла без расширения
android.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене)
android.output_file_name = '{@output_file_format}-Default.apk'
# dont change
android.sln_config = 'Release' # Нельзя указывать платформу(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

View File

@ -16,7 +16,6 @@ ios.tf_team_token = 'c5c3cf7a6dae2bea4382dfbd181a2075_Mjc4ODkwMjAxMy0wOS0yOSAxND
# android platform settings # android platform settings
android.sln_config = Release|AnyCPU android.sln_config = Release|AnyCPU
android.sln_config_build = Release
android.steps = 'scripts/AndroidSteps.txt' android.steps = 'scripts/AndroidSteps.txt'
# config settings # config settings