
- •Форма задания на выполнение курсового проекта (курсовой работы)
- •Задание на выПолнение курсового проекта (курсовой работы)
- •Кафедра «Информационные и управляющие системы» курсовая работа
- •Введение
- •Методы непрерывной интеграции и разработки в практике гибкой разработки
- •Проекты, которые выигрывают от непрерывной интеграции
- •Обзор Jenkins
- •История создания Jenkins
- •Использование
- •Внедрение непрерывной интеграции в компании
- •Заключение
- •Список литературы
Методы непрерывной интеграции и разработки в практике гибкой разработки
Сегодня большинство людей слышало о методах гибкой разработки. Идеи, которые они внесли в разработку программного обеспечения, изменили подход к организации работ, адаптации к меняющимся требованиям и выпуска программного обеспечения. Непрерывная интеграция предназначена для гибкой разработки, так что гибкий подход служит контекстом любых разговоров о CI. Она организует разработку с помощью функциональных пользовательских легенд (user stories). Эти легенды образуют отдельные группы задач, спринты (sprints).
По словам Мартина Фаулера из ThoughtWorks, непрерывная интеграция ― это практика разработки программного обеспечения, которая требует от членов группы частой интеграции их работы. Каждый занимается интеграцией, по крайней мере, ежедневно, что приводит к множеству актов интеграции в день. Интеграция проверяется путем автоматической сборки с прохождением регрессивных тестов для скорейшего выявления ошибок. Этот подход приводит к значительно меньшему числу проблем интеграции и позволяет разработкам быстрее согласовать свое программное обеспечение.
Так мы подходим к последней детали, которая делает процесс CI успешным. Если идея непрерывной интеграции ― быстро выявить проблемы, так чтобы каждый разработчик видел результат своей работы, то должен быть способ быстро оценить эту работу. Эту задачу решает разработка через тестирование. Вы создаете тест, и затем разрабатываете функциональность до тех пор, пока код этот тест не пройдет. При каждом дополнении к коду в набор тестов добавляются испытания для него, и этот набор применяется к результату. Это гарантирует, что дополнения не нарушат то, что уже сделано, а те разработчики, чей код «нарушает сборку», быстро узнают об этом. Типичное сочетание непрерывной интеграции и разработки через тестирование иллюстрируется на рисунке 1.
Рисунок 1. Гибкая разработка с помощью непрерывной интеграции и разработки через тестирование
Проекты, которые выигрывают от непрерывной интеграции
Полигоном для методов гибкой разработки и CI были группы менее чем из 50 человек, работающие над несложными проектами. Но продукты становятся все более "интеллектуальными", и их сложность быстро повышается.
Количество встроенного программного обеспечения, присутствующего в традиционных изделиях, поражает воображение. Сегодня новый автомобиль оценивается не столько по мощности двигателя, сколько по технологии встроенного программного обеспечения (помощь при парковке, передовые меры безопасности, эффективное использование топлива, развлекательная система и т.п.). Сегодня при создании нового автомобиля пишется больше строк кода, чем было написано для истребителя F16.
Это увеличение сложности продукции сопровождается ускорением выпуска новых продуктов на рынок. Распространенность встроенного программного обеспечения в сочетании с более жесткими сроками привели разработчиков встраиваемых систем к гибким методам и CI.
Обзор Jenkins
Jenkins – инструмент непрерывной интеграции с открытым исходным кодом. Запускается в контейнере сервлетов, например, Apache Tomcat или GlassFish. Поддерживает нструментарий для работы с разными системами контроля версий, включая CVS, Subversion, Mercurial, Git и Clearcase, может собирать проекты Apache Ant и Apache Maven, а также исполнять shell-скрипты и команды Windows. Благодаря богатству плагинов для Jenkins его функциональность как инструмента для сборки проектов можно существенно расширить.
Сборка осуществляется на узлах, что позволяет организовывать распределенную инфраструктуру сборкипод управлением одного сервера.
Основными плюсами Jenkins являются:
открытость – активное сообщество, которое развивает сервер, добавляя в него новые возможности;
стоимость лицензий – сервер распространяется по лицензии MIT, что позволяет использовать его в коммерческих целях;
огромное количество надстроек, что позволяет добавлять возможности для использования новых технологий.