2017-02-13 24 views
2

Вот мой сценарий (TFS Интернет - username.visualstudio.com/repo):TFS - Непрерывная интеграция с разветвлением

Я следующую структуру папок

--$ 
    --TimeManagement (.sln file at this level) 
    --WebApp (Main branch) (.csproj at this level) 
    --WebApp-Dev (Dev Branch) (.csproj at this level) 
    --WebApp-QA (QA Branch) (.csproj at this level) 
    --TestTimeManagement (Test Project) 

С этим я создаю сборка с настройками по умолчанию и мой вариант выпуска делают успешную сборку на лазурный веб-сайт. Это работает отлично, пока я не приду со следующими сценариями:

  • мне нужно же/только тестовый проект, настроенный для основной & Dev филиала
  • Мне нужно, чтобы изменить отрасль конкретной сборки, так что вместо .sln файла, я хочу сборка должна учитывать .csproj филиала.
  • я могу внести изменения в закладке запуска каждой сборки в - непрерывную сборку - добавить фильтр с отраслевыми определенными папками
  • В этом случае, мое DEV изменения ветви будет в основном выполнять связанные сборки и выполнение теста &, когда я, наконец, объединить свои изменения до основной ветвь, связанная с ней конструкция будет выполнена с тем же тестовым случаем.
  • Я попытался поиграть с этим, однако сборка была перепутана с .csproj для решения. Он не может найти тест сборки - **\*test*.dll

Проще говоря, я ищу для установки TFS (онлайн, на данный момент), где будет несколько ветвей (Dev, основной, постановка, контроль качества) с единый тестовый проект и настраивать сборки, триггеры для определенных изменений в отрасли.

Сомнение: Можем ли мы создать филиал на .csproj уровне или только должны ветвление на .sln уровне?

Если я получу какой-либо справочный документ/видео, было бы здорово!

+0

Почему вы не можете разветвиться на уровне решения? – Fran

+0

Это может быть сделано в любое время и работоспособно. Я хотел знать, что сценарий, который я пытаюсь сделать, возможен или полностью из коробки. Чтобы избежать повторяющихся кодов/проектов в решении. – Kenz

+0

Всегда ветви на уровне решения. То, что вы предлагаете, - это почти всегда плохая идея. –

ответ

1

Сомнение: можем ли мы создать ветку на уровне .csproj или только разветвление на уровне .sln?

Вы можете разветвляться на любом уровне, который вы хотите: уровень решения, уровень проекта, уровень папки и уровень файла.

У меня есть настройка, где у нас есть несколько решений, и есть несколько проектов, которые либо используются одним решением, либо разделяются несколькими. Если они используются несколькими решениями, и вы вносите изменения в проект при работе над одним решением, есть вероятность, что вы можете нарушить другие решения. Поэтому для этого случая у меня есть решение master, которое имеет сборку CI, которая строит все проекты, чтобы убедиться, что ничего не сломано.

Помните, что когда у вас много ветвей, слияние становится более сложным. Я предлагаю вам начать с простой стратегии филиала: Dev и Main. Если это не работает для вас, то создайте больше ветвей. Каждый день разработка может быть выполнена в ветке Dev, и когда вы будете готовы, вы можете отключиться и перейти в главный филиал. Но прежде, чем вы слились с Main, убедитесь, что слились из Главной ветви в Dev, а затем слились с Dev на Main: всегда делайте это как хорошую практику.

Существует различие между средами (Dev, QA, Prod) и ветвями. Отношения не должны быть 1: 1. Таким образом, у вас может быть 2 филиала (Dev, Main) и все еще есть много разных сред.

+0

@CondingYoshi, я согласен с вашей точкой зрения. Просто вопрос, так как у вас также есть реализация проектов, разделяемых несколькими решениями. Является ли эта зависимость - ссылка добавлена, сделана через MSBuild в TFS? Я пытался добавить несколько проектов в build, но это отлично работает на локальной машине, ссылки могут легко добавлять и находить, однако на уровне TFS MSBuild ссылки не могут найти, любые предложения? – Kenz

+1

В VSTS (веб-портале TFS) вам нужно убедиться, что на вкладке «Репозиторий» на пути к серверу вы не указали только проект, который вы строите. Вы должны указать местоположение, поэтому, когда файлы загружаются из этого местоположения, все зависимости загружаются также. – CodingYoshi

+0

Думаю, мне нужно больше взглянуть на эти варианты. – Kenz