diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..8dc3bba --- /dev/null +++ b/readme.txt @@ -0,0 +1,32 @@ +Добавить символьную ссылку на скрипт сборки. Заменить на абсолютный путь к корню репозитория билд скрипта +sudo ln -s /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= + +локально. path_to_local_direcotry – путь к папке вне репозитория проекта (чтобы ничего не потерлось) или добавить папку в настройку +tibuild --settings=scripts/settings.txt build="0.0" builder_path= publish_path= \ No newline at end of file diff --git a/scripts/common/android prepare.txt b/scripts/common/android prepare.txt index cac9df5..bb1e28b 100644 --- a/scripts/common/android prepare.txt +++ b/scripts/common/android prepare.txt @@ -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}' diff --git a/scripts/common/android.txt b/scripts/common/android.txt index a6864b0..1c8f24d 100644 --- a/scripts/common/android.txt +++ b/scripts/common/android.txt @@ -1,13 +1,13 @@ #restore from backup #create backup for '.' - - + + #if {@teamcity_build_id} create dirs '{@publish_path}' sh echo '{@teamcity_build_id}' > '{@publish_path}/../{@build}.build_id' - + #endif #restore from backup diff --git a/scripts/common/ios prepare.txt b/scripts/common/ios prepare.txt index a9faa82..0129e58 100644 --- a/scripts/common/ios prepare.txt +++ b/scripts/common/ios prepare.txt @@ -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}' diff --git a/scripts/common/ios.txt b/scripts/common/ios.txt index 665c6c9..e9f0c72 100644 --- a/scripts/common/ios.txt +++ b/scripts/common/ios.txt @@ -1,13 +1,13 @@ #restore from backup #create backup for '.' - - + + #if {@teamcity_build_id} create dirs '{@publish_path}' sh echo '{@teamcity_build_id}' > '{@publish_path}/../{@build}.build_id' - + #endif #restore from backup diff --git a/scripts/common/settings.txt b/scripts/common/settings.txt index e69de29..b5e756a 100644 --- a/scripts/common/settings.txt +++ b/scripts/common/settings.txt @@ -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 \ No newline at end of file