Compare commits
No commits in common. "master" and "BS-52" have entirely different histories.
47
readme.txt
47
readme.txt
|
|
@ -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
|
||||
|
|
@ -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'
|
||||
|
||||
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'
|
||||
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/
|
||||
|
||||
restore from backup
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
build '{@sln_path}' for '{@sln_config}'
|
||||
sign android '{@sln_path}' for '{@sln_config}' project '{@csproj_name}'
|
||||
|
|
@ -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}'
|
||||
|
|
@ -1 +0,0 @@
|
|||
copy '{@csproj_dir}/{@output_path}/{@package_name}-Signed.apk' to '{@publish_path}/{@output_file_name}'
|
||||
|
|
@ -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
|
||||
|
|
@ -1 +0,0 @@
|
|||
build '{@sln_path}' for '{@sln_config}'
|
||||
|
|
@ -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}'
|
||||
|
|
@ -1 +0,0 @@
|
|||
copy '{@csproj_dir}/{@output_path}/{@output_file_format}.ipa' to '{@publish_path}/{@output_file_name}'
|
||||
|
|
@ -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'
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -16,7 +16,6 @@ ios.tf_team_token = 'c5c3cf7a6dae2bea4382dfbd181a2075_Mjc4ODkwMjAxMy0wOS0yOSAxND
|
|||
|
||||
# android platform settings
|
||||
android.sln_config = Release|AnyCPU
|
||||
android.sln_config_build = Release
|
||||
android.steps = 'scripts/AndroidSteps.txt'
|
||||
|
||||
# config settings
|
||||
|
|
|
|||
Loading…
Reference in New Issue