2016-01-05 3 views
2

Я абсолютный новичок на CI (Непрерывная интеграция), Docker и Vagrant.Jenkins .Net и Docker?

Я хочу использовать jenkins для того, чтобы построить мою .Net-систему построения проектов, подключенную к репозиторию , используя webhook.

Я видел, что у Докера есть изображение для Jenkins, но я не знаю, как использовать Jenkins в изображении Docker, чтобы строить мои .Net-проекты. Итак, проекты .Net будут выполнять скрипты msbuild, и я выясню, что для этого требуется какая-то установка .NEt framework. Можно ли запускать скрипты msbuild на бродячем изображении?

Как насчет бродяг в середине этого поведения? Я надеюсь, что был достаточно ясен.

+0

Работает Microsoft, чтобы получить Docker изначально на Windows, но в настоящее время она работает только в Virtualbox (или другой Linux VM). Пока вы не заинтересованы в том, чтобы переместить свой стек на linux, Docker не является для вас реальным вариантом IMHO. – ZeissS

ответ

6

Есть в вопросе несколько вещей, которые могут потребоваться некоторые пояснения, но я буду пытаться ответить

процесс А CI, где вы постоянно проверять свой кодовый, когда он стремится к системе управления версий. Это может быть так же просто, как компиляция кода и проверка его успешной сборки. Кроме того, вы можете запустить набор модульных тестов, развернуть код в среде и выполнить интеграционные тесты или даже запустить тесты User Acceptance. Лучше всего начинать просто и добавлять слои, а не пытаться делать все за один раз, особенно если вы новичок в CI.

Процесс CI обеспечивает быструю обратную связь (сделал то, что я только что изменил, сломал что-то), это повышает уверенность в том, что ваша кодовая база стабильна и освобождена. Чем больше автоматическое тестирование вы делаете, тем больше у вас уверенности в том, что ваши изменения звучат и не имеют непреднамеренных побочных эффектов. CI сборки должны быть как можно быстрее. Идея состоит в том, чтобы получить быструю обратную связь, поэтому, если ваша сборка занимает 90 секунд, это потрясающе. Разработчику не нужно долго ждать, чтобы узнать, что они что-то сломали. Если потребуется 90 минут, разработчик не получает своевременную обратную связь и, вероятно, перешел к другой задаче (or is sat around waiting for the build to complete). Это означает, что они могут вносить изменения в сломанную кодовую базу. Некоторые люди используют тест на кофе. т. е. если сборка занимает больше времени, чем время, требуемое разработчику, чтобы сделать чашку кофе и вернуться к своему столу, то это занимает слишком много времени.

Вы можете использовать Jenkins для реализации CI, это хороший выбор, поскольку у него есть много доступных плагинов, которые помогут вам добавить слои в процесс CI. У этого также есть большое сообщество вокруг этого, поэтому новые инструменты и технологии добавляются регулярно, и есть много знающих людей, чтобы помочь, если у Вас есть вопросы.

Для запуска сервера CI, такого как Jenkins, вам необходимо его установить. Обычно это на выделенном сервере. Если вы хотите построить .net-код, это будет сервер Windows. (в то время как .net-ядро теперь является OSS и работает на Linux, вряд ли на данный момент существующие приложения .NET будут скомпилированы на Linux без каких-либо усилий, это может измениться по мере того, как ядро ​​.net развивается и становится больше возможностей)

Here is a good "getting started" руководство установить Jenkins и настроить его для создания приложений .net.

Контейнер Docker, о котором вы упомянули, станет способом простого развертывания сервера Jenkins в среде на основе Linux. Как упоминает ZeissS, поддержка контейнеров еще не готова к окнам.

Сказав, что, если у вас есть инфраструктура Linux, вы можете использовать докер для настройки сервера и иметь агенты или ведомые окна для выполнения реальных сборок. Использование ведомых устройств хорошо, так как вы можете выполнять несколько сборок одновременно.Если у вас несколько решений и/или большая команда разработчиков, вы, вероятно, захотите их использовать, даже если вы используете окна для своего сервера Jenkins.

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

Его можно использовать во многих местах. Например, вы можете использовать его для создания подчиненных машин для процесса сборки или для развертывания среды для запуска тестов интеграции/пользователя. Помните, что этот CI - это быстрая обратная связь, поэтому, если вы думаете об использовании одноразовых машин для ведомых устройств или сред, тогда вам нужно учитывать время, необходимое для создания новой машины. Я нашел, что полезно использовать шаблон, используемый для создания виртуальной машины, работающей на рабочей станции devs для локального тестирования, до того, как будут выполнены изменения. Вы также можете использовать его для создания сред для более длительной работы (в ночное время), где вы выполняете более полный набор тестов или создаете полную кодовую базу для своего приложения, а не только компоненты, которые были изменены коммит.

Наконец, я бы сказал, что, хотя вы можете использовать Jenkins или любой другой CI-сервер для обработки вашего кода в среде. Я предпочитаю использовать инструмент управления релизами, например Octopus Deploy, который вы можете запустить из Jenkins, и он будет обрабатывать множество ваших потребностей развертывания из коробки (нажатие кода на удаленные компьютеры, настройка пулов приложений/служб Windows и т. Д.). Это совершенно необязательно, но что-то рассматривать.

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