Я использую SVN + CruiseControl.NET + MSBuild для создания проектов .NET. Это специфика технологии, чтобы вы понимали окружающую среду и мою терминологию, но вопрос носит более общий характер.
Прямо сейчас мой рабочий процесс CI довольно прост:
- CC.NET обнаруживает новую версию ствола проекта, обнаруженную в SVN
- Рабочая копия CC.NET обновлена из SVN
- MSBuild запускается для файла .proj в транке
- Выполнены юнит-тесты
- В случае успеха проект копируется / развертывается
На шаге 3 я бы хотел "поставить" номер версии на сборке; в моем случае в файле AssemblyInfo.cs, скорее всего, используется что-то вроде задачи AssemblyInfo из msbuildtasks. Кроме того, я хотел бы иметь возможность повторить эту сборку под конкретным номером версии. Прямо сейчас я думаю, что, вероятно, после шага 4 мне нужно будет зафиксировать / пометить обратно в SVN проект с помеченным AssemblyInfo.cs, но у меня возникли проблемы с поиском наиболее простого способа сделать это.
Если я фиксирую проект с штампованным файлом AssemblyInfo.cs обратно в хранилище, он не может быть в транке, так как это вызовет другую автоматическую сборку: бесконечный цикл. Итак, я предполагаю, что для этого потребуется перейти к новому тегу. Затем я бы пометил ревизию, переключил рабочую копию на метку, зафиксировал, а затем переключился обратно на транк. Это обычный способ?
Или я слишком усложняю это? Стоит ли мне беспокоиться о том, чтобы вернуть эту сборку обратно в репозиторий или просто заархивировать собранный проект и сохранить его в структурированном месте в файловой системе?