From a052b1cfe3786883c208d15958a6ed8f66997aa3 Mon Sep 17 00:00:00 2001 From: Rustam Zaitov Date: Mon, 30 Dec 2013 14:20:39 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=BC=D0=B5=D1=80=20=D0=BD=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=B5=D0=BA,=20=D0=BA=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D1=8B=D0=B5=20=D0=BD=D0=B5=D0=BE=D0=B1=D1=85=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D0=BC=D0=BE=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BE=D0=BF=D1=80?= =?UTF-8?q?=D0=B5=D0=B4=D0=B5=D0=BB=D1=8F=D1=82=D1=8C=20=D0=B2=20=D0=BF?= =?UTF-8?q?=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/common/settings.txt | 41 +++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/scripts/common/settings.txt b/scripts/common/settings.txt index e69de29..0c73750 100644 --- a/scripts/common/settings.txt +++ b/scripts/common/settings.txt @@ -0,0 +1,41 @@ +# global settings +teamcity_build_id = '0' +build = '0.0' # Будет переопределено teamcity + +build_tool = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool' +project_name = '' # required + +# укажите через запятую конфигурации которые необходимо собрать +configs = 'default_ios, appstore, default_android, googleplay' + +sln_path = '' # required +publish_path = '/BuildServer/{@project_name}/builds/{@publish_name}' + +# required +ios.provisioning_uudid = '' +ios.csproj_dir = '' +ios.csproj_path = '' +ios.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене) +# dont change +ios.sln_config = 'Release|iPhone' +ios.steps = '{@builder_path}/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_path = '' +android.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене) +# dont change +android.sln_config = 'Release|AnyCPU' +android.steps = '{@builder_path}/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 From 3ddc372634f38104d2e60c708e4eb80edc6db5fa Mon Sep 17 00:00:00 2001 From: Rustam Zaitov Date: Mon, 30 Dec 2013 16:08:34 +0400 Subject: [PATCH 2/3] =?UTF-8?q?=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BF?= =?UTF-8?q?=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD=D0=BE=D0=B9=20projec?= =?UTF-8?q?t=5Fpath=20=D0=BD=D0=B0=20project=5Fname=20=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D0=BA=D0=BE=D0=BB=D1=8C=D0=BA=D1=83=20=D1=82=D1=80=D0=B5=D0=B1?= =?UTF-8?q?=D1=83=D0=B5=D1=82=D1=81=D1=8F=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=20=D0=B8=D0=BC=D1=8F=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B0=20?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=B5=20=D0=BF=D1=83=D1=82=D1=8C=20=D0=BA=20?= =?UTF-8?q?=D0=BD=D0=B5=D0=BC=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/common/android prepare.txt | 4 ++-- scripts/common/android.txt | 6 +++--- scripts/common/ios prepare.txt | 8 ++++---- scripts/common/ios.txt | 6 +++--- scripts/common/settings.txt | 25 +++++++++++++++++-------- 5 files changed, 29 insertions(+), 20 deletions(-) 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..3a32078 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_profile}' 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 0c73750..6e2e506 100644 --- a/scripts/common/settings.txt +++ b/scripts/common/settings.txt @@ -1,24 +1,33 @@ # global settings teamcity_build_id = '0' -build = '0.0' # Будет переопределено teamcity + +# Будет переопределено teamcity +version = '0.0' +build = '0' build_tool = '/Applications/Xamarin\ Studio.app/Contents/MacOS/mdtool' -project_name = '' # required +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' -sln_path = '' # required -publish_path = '/BuildServer/{@project_name}/builds/{@publish_name}' +# required. Возможно для IOs и Android созданы разные sln файлы, тогда эту настройку +# следует перенести в ios и android конфигурации +sln_path = '' # required ios.provisioning_uudid = '' ios.csproj_dir = '' -ios.csproj_path = '' +ios.csproj_name = '' ios.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене) # dont change ios.sln_config = 'Release|iPhone' -ios.steps = '{@builder_path}/common/ios.txt' +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 @@ -28,11 +37,11 @@ ios.appstore.provisioning_profile = 'distribution' # dont change # required android.csproj_dir = '' -android.csproj_path = '' +android.csproj_name = '' android.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене) # dont change android.sln_config = 'Release|AnyCPU' -android.steps = '{@builder_path}/common/android.txt' +android.steps = '{@builder_path}/scripts/common/android.txt' android.output_path = 'bin' android.publish_name = 'Android' From f9912d3fbf6a4fb48d009baad9e2cd47eebef64e Mon Sep 17 00:00:00 2001 From: Rustam Zaitov Date: Mon, 30 Dec 2013 16:47:22 +0400 Subject: [PATCH 3/3] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=86=D0=B8=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.txt | 32 ++++++++++++++++++++++++++++++++ scripts/common/ios prepare.txt | 2 +- scripts/common/settings.txt | 2 +- 3 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 readme.txt 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/ios prepare.txt b/scripts/common/ios prepare.txt index 3a32078..0129e58 100644 --- a/scripts/common/ios prepare.txt +++ b/scripts/common/ios prepare.txt @@ -1,7 +1,7 @@ install profile 'scripts/{@provisioning_profile}.mobileprovision' inside '{@csproj_dir}/{@csproj_name}' set CodesignKey to '{@provisioning_account}' for '{@sln_config}' -inside '{@csproj_dir}/{@csproj_name}' set CodesignProvision to '{@provisioning_profile}' 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 '' diff --git a/scripts/common/settings.txt b/scripts/common/settings.txt index 6e2e506..b5e756a 100644 --- a/scripts/common/settings.txt +++ b/scripts/common/settings.txt @@ -21,7 +21,7 @@ configs = 'default_ios, appstore, default_android, googleplay' sln_path = '' # required -ios.provisioning_uudid = '' +ios.provisioning_uudid = '' # Можно использовать пробел для режима Automatic ios.csproj_dir = '' ios.csproj_name = '' ios.remove_project = '' #оставить пустым если не надо удалять проекты. Чаще всего указывают проект Android (если он в том же солюшене)