В настоящее время я работаю над проектом, который продолжается уже несколько лет подряд. Команда разработчиков небольшая (менее 5 программистов), контроля над исходным кодом практически не существует, а процесс развертывания как таковой основан на ручном перемещении файлов с одного сервера на другой. Проект выполнен в классическом ASP, поэтому сборка не является проблемой, поскольку и развертывание, и тестирование сводятся к тому, чтобы доставить файлы туда, где они должны быть, и направить браузер в нужное место. В настоящее время вся разработка выполняется на сетевом диске, который также является тест-сервером. Тест-сервер доступен только в локальной сети (доступен через vpn) и доступен по адресу site.test в браузере (требует редактирования файла hosts на всех клиентах, но так как нас так мало, что вообще не было никаких проблем). Все разработки ведутся в визуальной студии. Всякий раз, когда файл изменяется, разработчик, который изменил файл, должен записать файл, который он изменил, в текстовый документ и включить небольшое описание того, что было изменено и почему. Затем, когда предполагается наличие версии (развертывания), наш ведущий разработчик просматривает документ word и копирует каждый файл (файл за файлом), который был перенесен на рабочий сервер. Теперь, я не думаю, что мне нужно говорить вам, что этот метод очень подвержен ошибкам (например, разработчик может забыть добавить, что он изменил некоторую зависимость, и это может вызвать проблемы при развертывании), и здесь много работы с развертыванием.
И здесь возникает главный вопрос. Ведущий разработчик попросил меня потратить некоторое время и посмотреть, смогу ли я найти простое решение, которое может упростить и автоматизировать «контроль версий» и развертывание. Теперь важно то, что настолько просто, насколько возможно использовать для разработчиков. Двое из существующих разработчиков работали с компьютерами в течение долгого времени, и они довольно сильно запутались в своих процедурах, поэтому, например, изменение их в нечто вроде git bash не сработало бы вообще. Не поймите меня неправильно, я люблю мерзавцев, но в первый раз у одного из них возник конфликт слияния, и они вообще не знали, что делать. Кроме того, было бы идеально перейти на более распределенный процесс разработки, где разработчикам не нужно было бы заходить в vpn (или вообще не нуждаться в интернете) для разработки, а внесенные ими изменения в автономном режиме можно было синхронизировать, когда они были сделано с ними. Теперь я посмотрел на Teem Development Server от Microsoft, потому что он тесно интегрирован с Visual Studio. Насколько я тестировал, кажется возможным заставить Visual Studio запрашивать у пользователя, хотят ли они регистрировать изменения каждый раз, когда пользователь закрывает Visual Studio. Теперь использование TFS для контроля исходного кода, вероятно, устранит большинство проблем с разработкой, но как насчет развертывания? Не говоря уже о версии? Насколько я понял (я только кратко рассмотрел TFS), TFS имеет порядковый номер для каждой регистрации, но можно ли сказать TFS, что эта регистрация должна быть версии 2.0.1 системы (например), а затем развернуть его на веб-сервере? И еще одна проблема, полное решение состоит из около 10 каталогов с сотнями файлов, хотя сама система (без образов и тому подобного) - это всего 5 каталогов, и только эти 5 должны быть развернуты на сервере, это возможно для автоматизации?
Я знаю, что здесь много вопросов, но самое главное, что я хочу автоматизировать процесс разработки (не кодирование, а управление кодом) и процесс развертывания, и я хочу сделать это максимально просто использовать .Мне все равно, если настройка - это немного работы, потому что у меня было достаточно времени, чтобы настроить любую систему, которая соответствует нашим потребностям, но другие разработчики не должны были выполнять большую часть настройки .Если все машины, которые должны использовать систему, должны быть настроены один раз, это не проблема, потому что я могу это сделать, но больше не нужно настраивать и настраивать по ходу работы.
Теперь, у кого-нибудь из вас есть какие-либо предложения относительно того, какие системы использовать / как их использовать, чтобы упростить описанные выше процессы?Ранее я работал с несколькими типами scm-систем (GIT, HG и SubVersion), но у меня нет никакого опыта работы со сборочными системами (если это необходимо).Статьи и обсуждения о том, как эффективно настроить подобные системы, будут с благодарностью.Заранее спасибо.