0

В настоящее время мы запускаем проект C# (построен на Sharepoint) и внедрили серию автоматизированных процессов для доставки, вот подробности.Частичные пакеты в непрерывной доставке

  1. Непрерывная интеграция. Типичная система CI для частой компиляции и развертывания в среде DEV.
  2. Частичный пакет. Каждую неделю идентифицируется список дефектов, сопровождающих исправления, и соответствующие сборки собираются из полного пакета для формирования частичного пакета. Частичный пакет развертывается и тестируется в последующих средах.

В этом конвейере, проверяются два пакета. Дополнительные усилия используются для создания новой системы (веб-сайт, скрипты, процесс и т. Д.) Для частичных пакетов. Однако некоторые факторы препятствуют его улучшению.

  1. Время сборки и развертывания слишком велико. На машинах разработчиков каждая модификация на сборках запускает от 5 до 10 минут перераспределения в IIS. Кроме того, для восстановления всего решения требуется 15 минут (или даже больше). (Самая болезненная часть этого проекта)
  2. Географическая разница. Каждый последний пакет поставляется в другой офис, поэтому ручная работа неизбежна, и размер пакета предпочтителен быть небольшим.

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

+0

(Я бы предложил, чтобы это было перенесено на programers.stackexchange.com) - Несколько уточняющих вопросов - это компиляция решения, требующая 15 минут для компиляции на машинах разработчиков? Или на сборке? – Rocklan

+0

Требуется 15 минут на обеих машинах dev и build. И в нашей команде из 30 членов, чек может занять более полутора часов. – user2741411

+0

Ну, ваш первый шаг - попытаться сократить время сборки. Вам нужно разработать способ остановить все, начиная с повторной компиляции с нуля - только те вещи, которые изменились. Возможно, вы можете разделить код на разные модули, которые могут быть скомпилированы, версированы и поэтому вы можете ссылаться на двоичные объекты. Возможно, лучшее оборудование поможет. – Rocklan

ответ

0

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

Scope ваша задача как можно более узким

«Слишком долго» является очень субъективным. Я знаю некоторые более крупные проекты, которые хотели бы видеть 15-минутное время сборки. Учитывая ваш вопрос, вы не можете узнать, испытываете ли вы проблему конфигурации или проблему с инфраструктурой. Примером проблемы с конфигурацией может быть, будут ли ваши проекты в полной мере использовать несколько ядер путем параллельной сборки /m switch? Примером проблемы с инфраструктурой может быть, если вы пытаетесь переместить большие объемы данных по медленной линии с использованием неэффективного или дефектного оборудования. Похоже, вы видите одно и то же время на разных машинах, поэтому можете сосредоточиться на настройке.

ломаются вашей сборки в «задачи» и каждая задача в самые краткие возможные шаги

Это сделает самое, чтобы помочь вам настроить вашу конфигурацию и понять, что вам нужно, чтобы лучше организовать. Если вы строите решение с использованием сервера CI, вы, вероятно, работаете с помощью команды, например, msbuild.exe OurProduct.sln, которая является правильным способом получить что-то и работать быстро, поэтому есть некоторая обратная связь. Но для оптимизации это решение необходимо разбить на независимые проекты. Если вы обнаружите один проект, который вызывает большую часть вашего времени, он может указывать на другие проблемы или может быть основным проектом, от которого зависит все остальное.Как вы справляетесь с вашими зависимостями задания сборки, зависит от вашего CI-сервера и решения. Выполнение этого так будет создавать больше оркестровки на вашем конце, но даст более быструю обратную связь, если это то, что требуется, поскольку вы только строите проект, который имел изменение, а не полное решение.

Я не уверен, что вы имеете в виду под «географической разницей». Это «толчок» в офис или «вытаскивание» из офисов? Это еще один вопрос. КАК вы получаете файлы там? И для чего требуется ручной шаг?

Уточните сферу действия и сделайте несколько вопросов, и вы, вероятно, получите лучше (не говоря уже о более коротких и более сжатых) ответах.

Лучшее!

0

Я не разработчик C#, но принципы остаются неизменными.

Чтобы ускорить сборку, необходимо, если это возможно, разорвать ваше приложение на более мелкие куски. Если это невозможно, у вас теперь есть большие проблемы с атакой. Помните принципы API, компоненты и разделение проблем. Если вы не знакомы с этими принципами, это определенно стоит времени, чтобы узнать о них.

С точки зрения развертывания - отлично, что вы его автоматизировали, но это звучит точно так же, как вы строите развертывание с большими битками. Можете ли вы придумать способ развернуть только дельта на сервер (ы), разве вы развертываете один сжатый файл? Разбейте его, если это возможно.