Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TeamCity + Cmake + VS 
:(
    Опции темы
cupper
Дата 19.12.2011, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Всем привет. Пытаюсь разобраться как соединить teamCity и проект на С++, сборка происходит на основе Cmake, тот в свою очередь генерирует либо солюшин либо make.

У teancity есть плагин для Cmake, но я вообще не понял как его прикрутить (или что он уже есть в 6.5 версии). Если кто имел дело в сим чудом, подскажите в какую сторону двигаться ?
PM MAIL   Вверх
VladP53
Дата 21.12.2011, 03:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.12.2011

Репутация: нет
Всего: нет



День добрый, cupper.

Действительно для TeamCity существует плагин для работы с CMake.
В комплекте он НЕ идет.
Он представляет собой интерфейс задания параметров для запуска cmake.
Для установки необходимо:
  •  Скачать плагин (артифакт из конфигурации) (для 6.5.x)
  •  Поместить его например  в папку $USER_HOME/.BuildServer/plugins  в соответствии с инструкцией
  •  Перезагрузить сервер.
Плагин предоставляет три runner'а:
  • CMake Configure - для этапа конфигурирования
  • CMake Build - для собственно сборки (через вызов cmake --build)
  • GNUMake Build - для сборки с использованием make
Самое простое использование:
  •  Создать step с CMake Configure с параметрами working directory = build,  source directory = ..
  •  Создать CMake Build step с параметром working directory = build
Таким образом проект соберется в папке build.

Если есть вопросы или что-то не понятно - спрашивайте.
Если есть возможность, то желательно задавать вопросы по-английски на форуме TeamCity DevNet http://devnet.jetbrains.net/community/teamcity



Это сообщение отредактировал(а) VladP53 - 21.12.2011, 10:26
PM MAIL GTalk   Вверх
cupper
Дата 21.12.2011, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Оу, спасибо за столь хорошее объяснение. Сылку на сам плагин я находил но меня смутило что при попытке скачать его предлагало авторизроваться, не просто смутило - сбило с толку smile

Опуская прелюдию, сформировались вполне четкие вопросы:

1. Вместо плагина Cmake можно юзать Command Line? потому что у меня уже есть скрипты для запуска cmake с нужными параметрами (ну т.е. не зависить от того что cmake должен быть непосредственно в teamcity а просто настроить иметь его в системе).

2. Не совсем понял где должны находиться шаги для непосредственно построение проекта и запуска тестов (судя по вашему посту для Cmake модуля в нутри самого Cmake). С таким же успехом можно написать эти шаги через Command Line и набор скриптов ? (в любом случае либо cmake переписывать либо скрипты дописывать, разница не велика, но скприты по моему более гибко)

3. Rules. (Рассматриваю для случая SVN), вообще не понял как это работает, синтаксис и прочее, ничего толком не смог найти ни в доке ни в инете, по дефолту было написано правило trunk => tags. После того как я понял зачем вообще нудны Rules я понял что такое trunk и заменил его на нужный мне путь, но =>tags вообще не понимаю что это и зачем. Где то пишут что для того что бы слить проект из репозитария достаточно правила `+:path_to_source=>.` Я вообще не смог связать это с предыдущим правилось где tags это относилось явно к репозитарию. Т.е. вопрос стоит так: для того что бы сливать все обновление из репозитария какое правило нужно ? Да и вообще где бы почитать про синтаксис этих правил и что там можно сделать и чего низя.

4. Вчера попробовал запустить с правилом trunk/Myprogect=>tags и у меня Build running процесс завис, т.е. крутиться, в лог написано только 3 строки о подключение к репозитария и запросу head ревизии и все, попытался выключить, через некоторое время этот процесс висит в состоянии cannot stop и отправляет на агент что бы я что то сделал. НО ЧТО, как я не бился и так и не нашел способа прервать зависшый процесс. 

Заранее спасибо smile

PS. от блин, тока ща дошло, аддон Cmake наверно и нужен только для того что бы TeamCity мог понимать выхлоп самого Cmake :( а через command line этого не добиться. Но у нас используется ряд специфичных FindModule.cmake которые хранятся вместе с проектом, таким образом либо искать способ передать их встроенному в teamcyti cmake'y либо игонорировать выхлоп сборки и логировать его для ручного аналиа если что то не так.

Это сообщение отредактировал(а) cupper - 21.12.2011, 10:13
PM MAIL   Вверх
VladP53
Дата 21.12.2011, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 21.12.2011

Репутация: нет
Всего: нет



Цитата(cupper @ 21.12.2011,  10:03)
Оу, спасибо за столь хорошее объяснение. Сылку на сам плагин я находил но меня смутило что при попытке скачать его предлагало авторизроваться, не просто смутило - сбило с толку smile

Опуская прелюдию, сформировались вполне четкие вопросы:

1. Вместо плагина Cmake можно юзать Command Line? потому что у меня уже есть скрипты для запуска cmake с нужными параметрами (ну т.е. не зависить от того что cmake должен быть непосредственно в teamcity а просто настроить иметь его в системе).

2. Не совсем понял где должны находиться шаги для непосредственно построение проекта и запуска тестов (судя по вашему посту для Cmake модуля в нутри самого Cmake). С таким же успехом можно написать эти шаги через Command Line и набор скриптов ? (в любом случае либо cmake переписывать либо скрипты дописывать, разница не велика, но скприты по моему более гибко)

3. Rules. (Рассматриваю для случая SVN), вообще не понял как это работает, синтаксис и прочее, ничего толком не смог найти ни в доке ни в инете, по дефолту было написано правило trunk => tags. После того как я понял зачем вообще нудны Rules я понял что такое trunk и заменил его на нужный мне путь, но =>tags вообще не понимаю что это и зачем. Где то пишут что для того что бы слить проект из репозитария достаточно правила `+:path_to_source=>.` Я вообще не смог связать это с предыдущим правилось где tags это относилось явно к репозитарию. Т.е. вопрос стоит так: для того что бы сливать все обновление из репозитария какое правило нужно ? Да и вообще где бы почитать про синтаксис этих правил и что там можно сделать и чего низя.

4. Вчера попробовал запустить с правилом trunk/Myprogect=>tags и у меня Build running процесс завис, т.е. крутиться, в лог написано только 3 строки о подключение к репозитария и запросу head ревизии и все, попытался выключить, через некоторое время этот процесс висит в состоянии cannot stop и отправляет на агент что бы я что то сделал. НО ЧТО, как я не бился и так и не нашел способа прервать зависшый процесс. 

Заранее спасибо smile

PS. от блин, тока ща дошло, аддон Cmake наверно и нужен только для того что бы TeamCity мог понимать выхлоп самого Cmake :( а через command line этого не добиться. Но у нас используется ряд специфичных FindModule.cmake которые хранятся вместе с проектом, таким образом либо искать способ передать их встроенному в teamcyti cmake'y либо игонорировать выхлоп сборки и логировать его для ручного аналиа если что то не так.

Отвечаю по пунктам

0. Там в окне авторизации есть кнопка "Login as Guest" =)

1. Конечно. Фактически runner'ы плагина делают то же самое, что и Command Line runner, но при этом еще могут обрабатывать output для cmake/make. 
Если есть скрипты, то в принципе можно использовать command line runner. 
Плагин использует установленный в системе cmake и если его нет, то считается что агент не может запустить у себя конфигурацию с одним из степов Cmake configure/build.
Поэтому предпочтительно использовать runner'ы из плагина, т.к. они запустятся толбко если есть cmake.

2. Шаги - они же steps - часть build configuration и настраиваются при настройке build configuration в интерфейсе TeamCity.

3. В документации вроде все описано. Фактически это правила для маппинга между репозиторием и папкой в которую выкачивается репозиторий. Обычно достаточно что-то вроде trunk=>.

4. Пожалуйста, попробуйте повторить действие создайте issue об этой ошибке. http://youtrack.jetbrains.com/issues/TW

Относительно CTest. В данный момент его можно запустить только через Command Line runner. Более подробная информация о поддержке CTest: http://youtrack.jetbrains.com/issue/TW-124...mment=27-256327 
PM MAIL GTalk   Вверх
cupper
Дата 21.12.2011, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



спасибо за ответы, и в частности да прямую ссылку на доку, именно это часть я и не мог найти. Буду переваривать.

PS. та ошибка про которую я писал на картинки в аттаче. Вчера в горяче залез в папку в билдагентов потер там папку с проектом хотя там и так почти ничерта не было, сегодня переделал правило запустил и все в точности тоже самое.

Путь до svn как и указано во всех манах указана до корня, далее есть правило вида
+:trank/myProject=>.
не в логе видно что агент пытается сапдейтится с корня репозирания, и даже получает инфу коммитах, вот тока со всех проектов в репозитарии а не с моего именно. Отсюда три предположения
- У меня нет прав чтобы сливать весь репозитарий
- агент пытается слить только коммиты но применять их не на что вот он и виснет.

и третье, из за VCS checkout mode: который я установил в Automatically on Agent. Я понимаю это как то что агент сам должен коннектится к svn и сливать то что ему нужно. Может в этом загвоздка ?

Это сообщение отредактировал(а) cupper - 21.12.2011, 13:15

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  teamcity_error.jpg 187,96 Kb
PM MAIL   Вверх
cupper
Дата 21.12.2011, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



 lebeling rules != Checkout rules :( В этом и была проблема.

Это сообщение отредактировал(а) cupper - 21.12.2011, 21:57
PM MAIL   Вверх
cupper
Дата 26.12.2011, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



Боле менее разобрался с самим TeamCity, написал скрипт на Ant'e, и появились новые проблемы, а именно вывод информации в случае каких либо ошибок

Имею, Cmake скрип, обертки на batch и shell которые вызывают cmake в нужными параметрами.
Написал Ant скрипт, из которого вызывает скрипты на batch. Все это всецело работает НО в случае каких либо ошибок (например при генерации cmake) информация об этом выводиться только в общей лог, нет того самого ради чего это используется списка возникших ошибок. Вернее оно есть но очень скупо.

Например когда я из Ant'a запускает через exec скрипт, или команду devenv(msbuild) для сборки проекта, в случае ошибок мне показывается только что exec вернул код 1 . В логе же все конечно видно
Код

[20:24:06]: [exec]   D:\work\TeamCity\buildAgent\work\913d61df584da8de\BusinessLayer\test\Logger.cpp(5): error C2039: 'put1' : is not a member of 'd::Test::Logger' 
[D:\work\TeamCity\buildAgent\work\913d61df584da8de\vs10_64.build\BusinessLayer\test\b2b_d_business_layer_test.vcxproj]
[20:24:06]: [exec]   D:\work\TeamCity\buildAgent\work\913d61df584da8de\BusinessLayer\test\Logger.cpp(7): error C2065: 'log_' : undeclared identifier 
[D:\work\TeamCity\buildAgent\work\913d61df584da8de\vs10_64.build\BusinessLayer\test\b2b_d_business_layer_test.vcxproj]
[20:24:06]: [exec]     0 Warning(s)
[20:24:06]: [exec]     2 Error(s)
[20:24:06]: [exec] Time Elapsed 00:00:09.81
[20:24:06]: [exec] Result: 1


Если же саму сборку переложить на teamCity (указав ему путь до солюшина) то тогда все кошерно,в процессе построение явно показывается что ошибка компиляции и сами ошибки. 
Я понимаю что я хочу через выхлопную трубу поправить двигатель, вот и задаюсь вопросом что и вправду что это идеологически неверно для TC ? Но в ином случае мне придется делать много step'ов в нутри самого TeamCity И что самое главное при каждом переезде настраивать его с нуля.

Да и например для меня пока загадка как мне сделать сборку по средством make да так чтобы в случае ошибок они фиксировались больше чем записью о том что команда вернула код 1.

Может я просто пока не знаю чего в TC что помогает решать все этим проблемы ?

Это сообщение отредактировал(а) cupper - 26.12.2011, 20:37
PM MAIL   Вверх
cupper
Дата 28.12.2011, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 525
Регистрация: 29.11.2006

Репутация: нет
Всего: 1



отвечаю сам себе: судя по всему куда проще сделать все основные этапы как отдельные step'ы задействовав все плюшки. Cmake генерить он умеет, make делать тоже, собирать солюшин умеет, остатки типа запуска тестов, построение билда сделать через bash/shell куда лучше(проще) чем через Ant, не для того все же он придуман.
PM MAIL   Вверх
Google
  Дата 12.12.2019, 04:00 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
2 Пользователей читают эту тему (2 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Репортинговые системы | Следующая тема »


 




[ Время генерации скрипта: 0.1037 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.