SlideShare a Scribd company logo
Часть первая
вводная
Проект 1. ТЗ
● Десктоп приложение работает с
сервером, обмениваются данными.
● Приложение должно быть авто-
обновляемым.
● Сервер обновлений работает отдельно от
основного сервера.
Проект 1. Модули
● rest-server
● desktop-client
● rest-api
● updater-server
● updater-client
Проект 1. Диаграмма
rest-server.war updater-server.war
MySQL
dekstop-client.jar updater-client.jar
Glassfish Server
Application.exe
Проект 1. Цели
● сборка должна выполняться одной
кнопкой
● апдейтер клиент и десктоп клиент должны
собираться в один ехе-шник
● после сборки клиентского приложения
файлы для обновления клиента должны
отправляться на апдейтер сервер
● авто-деплой war-файлов после коммита
Проект 1. Решение
Сборка должна выполняться одной кнопкой
● Maven
● Каждый модуль знает как собрать себя
● Все модули имеют одного парента
● При запуске сборки парента, модули
собираются автоматически
Отсутпление 1: Apache Maven
● система управления проектом
● система управления зависимостями
● декларативное описание в формате xml
● стандартная структура каталогов
● расширяется плагинами
● подмял под себя практически весь опен-
сурс
Проект 1. Решение
Апдейтер клиент и десктоп клиент должны
собираться в один ехе-шник
● Ant + JavaFx native bundle packager
● Оба модуля собираются в jar-файлы
● Эти jar-файлы и их зависимости
скармливаются в JavaFx native bundle
packager антом
Отсупление 2: Apache Ant
● управление сборкой проекта
● императивное описание в формате xml
Проект 1. Решение
Файлы для обновления клиента
отправляются на апдейтер сервер
● Ant
● Результат сборки модулей пакуем в zip
● Отправляем zip в определенную
директорию в Glassfish-е
Проект 1. Решение
Авто деплой апдейтер и рест вар-ников
● Glassfish maven plugin
● remote re-deploy обоих модулей после
завершения сборки
Проект 1. Решение
Сборка после кажого коммита
● Jenkins CI
● Опрашиваем SVN каждые 5 минут
● Если есть коммит, запускаем сборку
парента
Отсупление 3: Jenkins
● автоматизация сборки проекта
● расширяется плагинами
● поддерживает Maven и Ant проекты
Проект 2. ТЗ
● 2 Веб-приложения на GWT
● Шаринг сессий между приложениями
Проект 2. Диаграмма
n-web-app.war shell-web-app.war
Oracle
Weblogic Server
Oracle
Часть вторая
про сегодняшний проект
Проект МС. ТЗ
● Десктоп приложение работает с
сервером, обмениваются данными.
● Приложения для Windows и Linux
Проект МС. Модули
● rest-server
● desktop-client
● rest-api
Проект МС. Диаграмма
rest-server.war
dekstop-client.jar
Glassfish Server
Application
Общий план
1. Создание модулей в гите
2. Серверная часть
3. Клиентская часть
4. Настройка Jenkins

More Related Content

What's hot

Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Oleg Nenashev
 
Kubernetes
KubernetesKubernetes
Kubernetes
SQALab
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
SQALab
 
It meetup cd
It meetup cdIt meetup cd
It meetup cd
Victoria Astapenko
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
Fwdays
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Technopark
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
Vitalii Morvaniuk
 
CD with Jenkins. Lessons Learned
CD with Jenkins. Lessons LearnedCD with Jenkins. Lessons Learned
CD with Jenkins. Lessons Learned
Кирилл Толкачёв
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
IT Event
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleЛюбовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleGeeksLab Odessa
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
COMAQA.BY
 
My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25
Alex Chistyakov
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double funWebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double fun
Alexandr Khotemskoy
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
aviatakz
 
Менеджер пакетов NuGet
Менеджер пакетов NuGetМенеджер пакетов NuGet
Менеджер пакетов NuGet
GetDev.NET
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QAFest
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
DotNetConf
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
7bits
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration managementAlexander Kirillov
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
Fwdays
 

What's hot (20)

Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
Kubernetes
KubernetesKubernetes
Kubernetes
 
Docker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous IntegrationDocker + Selenium Webdriver в рамках Continuous Integration
Docker + Selenium Webdriver в рамках Continuous Integration
 
It meetup cd
It meetup cdIt meetup cd
It meetup cd
 
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
 
Обзор Continuous integration инструментов
Обзор Continuous integration инструментовОбзор Continuous integration инструментов
Обзор Continuous integration инструментов
 
CD with Jenkins. Lessons Learned
CD with Jenkins. Lessons LearnedCD with Jenkins. Lessons Learned
CD with Jenkins. Lessons Learned
 
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
 
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью GradleЛюбовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
 
Codeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышлоCodeception + Docker + Robo и что из этого вышло
Codeception + Docker + Robo и что из этого вышло
 
My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25My talk on Docker from Moscow Django Meetup #25
My talk on Docker from Moscow Django Meetup #25
 
WebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double funWebdriverIO + Puppeteer. Double gun – double fun
WebdriverIO + Puppeteer. Double gun – double fun
 
Python Development process in Yandex
Python Development process in YandexPython Development process in Yandex
Python Development process in Yandex
 
Менеджер пакетов NuGet
Менеджер пакетов NuGetМенеджер пакетов NuGet
Менеджер пакетов NuGet
 
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
QA Fest 2019. Александр Хотемской. WebdriverIO + Puppeteer. Double gun - doub...
 
Как приручить реактивное программирование
Как приручить реактивное программированиеКак приручить реактивное программирование
Как приручить реактивное программирование
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 
Application deployment & configuration management
Application deployment & configuration managementApplication deployment & configuration management
Application deployment & configuration management
 
Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"Никита Галкин "Testing in Node.js World"
Никита Галкин "Testing in Node.js World"
 

Similar to Мастер класс- Maven + Jenkins

SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложения
Denis Latushkin
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктуройdddpaul
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
SQALab
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...DrupalCamp MSK
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
Peri Innovations
 
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
SpbDotNet Community
 
Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"
Fwdays
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
Nata_Churda
 
Webpack для самых маленьких | Odessa Frontend Meetup #5
Webpack для самых маленьких | Odessa Frontend Meetup #5Webpack для самых маленьких | Odessa Frontend Meetup #5
Webpack для самых маленьких | Odessa Frontend Meetup #5
OdessaFrontend
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
John Wezel
 
станислав мехоношин «инфраструктура для разработки в один клик, или Vagrant д...
станислав мехоношин «инфраструктура для разработки в один клик, или Vagrant д...станислав мехоношин «инфраструктура для разработки в один клик, или Vagrant д...
станислав мехоношин «инфраструктура для разработки в один клик, или Vagrant д...DataArt
 
Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant д...
Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant д...Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant д...
Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant д...DataArt
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
Alexander Gerasiov
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
Анастасия Асеева
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
SQALab
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
corehard_by
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
Anatoly Popov
 

Similar to Мастер класс- Maven + Jenkins (20)

SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
NPM и модульная архитектура приложения
NPM и модульная архитектура приложенияNPM и модульная архитектура приложения
NPM и модульная архитектура приложения
 
Управление облачной инфраструктурой
Управление облачной инфраструктуройУправление облачной инфраструктурой
Управление облачной инфраструктурой
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
Continuous integration сайтов на Drupal: Jenkins, Bitbucket, Features, Drush ...
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
Vagrant puppet
Vagrant puppetVagrant puppet
Vagrant puppet
 
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
Иван Кожин «Saritasa Tools или ещё один подход к архитектуре приложения»
 
Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"Сергей Комлач "Итоги Google I/O: что нас ждет"
Сергей Комлач "Итоги Google I/O: что нас ждет"
 
«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»«Механизмы обновления платформы и окружений пользователей в Jelastic»
«Механизмы обновления платформы и окружений пользователей в Jelastic»
 
Webpack для самых маленьких | Odessa Frontend Meetup #5
Webpack для самых маленьких | Odessa Frontend Meetup #5Webpack для самых маленьких | Odessa Frontend Meetup #5
Webpack для самых маленьких | Odessa Frontend Meetup #5
 
Redux и изоморфные приложения
Redux и изоморфные приложенияRedux и изоморфные приложения
Redux и изоморфные приложения
 
станислав мехоношин «инфраструктура для разработки в один клик, или Vagrant д...
станислав мехоношин «инфраструктура для разработки в один клик, или Vagrant д...станислав мехоношин «инфраструктура для разработки в один клик, или Vagrant д...
станислав мехоношин «инфраструктура для разработки в один клик, или Vagrant д...
 
Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant д...
Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant д...Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant д...
Станислав Мехоношин «Инфраструктура для разработки в один клик, или Vagrant д...
 
Инструменты разработки ПО в *nix
Инструменты разработки ПО в *nixИнструменты разработки ПО в *nix
Инструменты разработки ПО в *nix
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019Автоматизируй это. Кирилл Тихонов ➠  CoreHard Autumn 2019
Автоматизируй это. Кирилл Тихонов ➠ CoreHard Autumn 2019
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 

Мастер класс- Maven + Jenkins

  • 2. Проект 1. ТЗ ● Десктоп приложение работает с сервером, обмениваются данными. ● Приложение должно быть авто- обновляемым. ● Сервер обновлений работает отдельно от основного сервера.
  • 3. Проект 1. Модули ● rest-server ● desktop-client ● rest-api ● updater-server ● updater-client
  • 4. Проект 1. Диаграмма rest-server.war updater-server.war MySQL dekstop-client.jar updater-client.jar Glassfish Server Application.exe
  • 5. Проект 1. Цели ● сборка должна выполняться одной кнопкой ● апдейтер клиент и десктоп клиент должны собираться в один ехе-шник ● после сборки клиентского приложения файлы для обновления клиента должны отправляться на апдейтер сервер ● авто-деплой war-файлов после коммита
  • 6. Проект 1. Решение Сборка должна выполняться одной кнопкой ● Maven ● Каждый модуль знает как собрать себя ● Все модули имеют одного парента ● При запуске сборки парента, модули собираются автоматически
  • 7. Отсутпление 1: Apache Maven ● система управления проектом ● система управления зависимостями ● декларативное описание в формате xml ● стандартная структура каталогов ● расширяется плагинами ● подмял под себя практически весь опен- сурс
  • 8. Проект 1. Решение Апдейтер клиент и десктоп клиент должны собираться в один ехе-шник ● Ant + JavaFx native bundle packager ● Оба модуля собираются в jar-файлы ● Эти jar-файлы и их зависимости скармливаются в JavaFx native bundle packager антом
  • 9. Отсупление 2: Apache Ant ● управление сборкой проекта ● императивное описание в формате xml
  • 10. Проект 1. Решение Файлы для обновления клиента отправляются на апдейтер сервер ● Ant ● Результат сборки модулей пакуем в zip ● Отправляем zip в определенную директорию в Glassfish-е
  • 11. Проект 1. Решение Авто деплой апдейтер и рест вар-ников ● Glassfish maven plugin ● remote re-deploy обоих модулей после завершения сборки
  • 12. Проект 1. Решение Сборка после кажого коммита ● Jenkins CI ● Опрашиваем SVN каждые 5 минут ● Если есть коммит, запускаем сборку парента
  • 13. Отсупление 3: Jenkins ● автоматизация сборки проекта ● расширяется плагинами ● поддерживает Maven и Ant проекты
  • 14. Проект 2. ТЗ ● 2 Веб-приложения на GWT ● Шаринг сессий между приложениями
  • 15. Проект 2. Диаграмма n-web-app.war shell-web-app.war Oracle Weblogic Server Oracle
  • 17. Проект МС. ТЗ ● Десктоп приложение работает с сервером, обмениваются данными. ● Приложения для Windows и Linux
  • 18. Проект МС. Модули ● rest-server ● desktop-client ● rest-api
  • 20. Общий план 1. Создание модулей в гите 2. Серверная часть 3. Клиентская часть 4. Настройка Jenkins