2016-07-12 3 views
1

Мы используем VisualSVN как наш репозиторий исходного кода на работе. У меня нет контроля над ним (Dev делает), и мне нужно приложить усилия по автоматизации, как они в настоящее время его используют.TeamCity - обновление SVN?

Каждое приложение разбито на разные ветви кода, которые для использования в настоящее время Dev также действуют как его версия. Таким образом, я развертываю из папки филиала для каждого приложения в SVN, а не в Trunk.

Некоторые из них являются сборками, которые создают общие файлы, используемые многими другими разрабатываемыми приложениями, и служат предпосылками для этих сборок. Поскольку некоторые из используемых репо содержат несколько ветвей, где одна ветка используется одним приложением и другая ветка для другого приложения, мне не нужно настраивать TeamCity для очистки/проверки, а затем снова перестроить все эти ветви.

Чтобы обойти это, я подумал, что просто отключить опцию «Очистить» в настройках проверки исправит это. Однако я заметил, что простое снятие флажка с чистой опцией не обязательно переводит на простое обновление SVN, так как это может произойти при выполнении обновления вручную.

Пример: Вручную, если я зашел в мой извлеченный каталог и удалил одну из папок ветвей кода, я мог бы вернуться назад и сделать щелчок правой кнопкой мыши -> SVN Update в корневой папке, и он обнаружит, что я был пропустите эту ветку и отпустите ее.

В TeamCity, однако, удаляя папку ветвления кода из папки проверки, а затем повторно запуская задание, она не обнаруживает, что эта ветка отсутствует, и перепроверьте ее. Строка курса терпит неудачу, и все. Это заставляет меня думать, что когда новая ветка появится на месте, она не проверит ее?

У меня отсутствует какой-либо другой параметр или очевидная опция, чтобы заставить TeamCity выполнить это обновление?

+0

Как вы управляете зависимостями к общим файлам, находящимся в других ветвях? Используете ли вы внешнюю функцию SVN? Во-вторых, вы могли бы настроить автоматическую упаковку nuget для зависимостей? Они все равно могут оставаться в своих отдельных ветвях и т. Д., Но приложение, требующее их, просто будет использовать пакеты, а не исходный код. – gezzahead

+0

Позвольте мне предисловие, сказав, что я очень новичок в этих инструментах и ​​изучаю их, когда я иду. Я не знаю, что такое внешние SVN. Для зависимостей я использовал зависимость моментального снимка в проекте построения, чтобы создавать цепочки построения. Я не знаком с nuget, поэтому мне придется исследовать. – h2ocool

ответ

1

Я думаю, что использование зависимостей построения цепочки/моментальных снимков в TeamCity не подходит для вашей проблемы - например. JetBrains website предполагает, что

Наиболее распространенный вариант использования цепочки сборки - это тот же набор тестов вашего проекта на разных платформах. Например, перед сборкой релиза вы хотите убедиться, что тесты выполняются правильно в разных платформах и средах. С этой целью вы можете проинструктировать TeamCity для запуска тестов, а затем сборку интеграции сначала и сборку релизов после этого.

Вместо этого, используя SVN Externals позволяет оформить ваш код и все зависимости (которые могут быть где-нибудь еще в репо SVN, например), и обратитесь к зависимостям в проекте с относительными путями. Недостатком является то, что вы будете строить все зависимости каждый раз.

В качестве альтернативы упаковка собственных пакетов NuGet (может быть выполнена by TeamCity) означает, что ваш проект ссылается только на пакет NuGet (в определенной версии) и, следовательно, не нужно создавать зависимость. Вам нужно будет настроить хранилище NuGet, но это может быть так же просто, как и общая папка.

Преимущество этих подходов заключается в том, что они работают как в локальном, так и в TeamCity, то есть в противном случае вам нужно вручную создать каждую зависимость.

+0

Спасибо, это очень полезно, и я согласен с тем, что цепочки сборки не выполняли то, что я хотел. Я изучу настройку упаковки NuGet, а также ознакомьтесь с внешними версиями SVN. Спасибо за помощь. – h2ocool

Смежные вопросы