Технологии разработки программного обеспечения
(практика)
Мартынов Семён, Хозяинов Иван
Санкт-Петербургского политехнического университета Петра Великого
Института компьютерных наук и технологий
Кафедра компьютерных систем и программных технологий
16 декабря 2017 г.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 1 / 28
Содержание
1 Итоги прошлого семинара
Итоги теста
Тестирование
Разница CI и CD
2 Travis CI
3 Atlassian Bamboo
4 Jenkins
5 Заключение
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 2 / 28
Итоги теста
Всего сдано работ: 20 (+5)
Опыт работы с таск-менеджерами: ZenHub?
CMake vs Make: согласен с 55%
Gradle vs Maven: согласен с 65%
Задача на поиск числа: Заработает у 40%
Управление ошибками vs. управления задачами: 3 ответа, с 2-я
согласен.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 3 / 28
Тестирование
ФИО, Группа?
Какие системы непрерывной интеграции я знаю с лекций по ТРПО?
Диаграмма Гантта, это про Jira или Redmine?
Какие стадии задачи предлагает Jira Task Workflow и почему это не
работает?
Задача: написать класс для вывода текущей даты и времени в
различных форматах.
Россия DD.MM.YYYY HH:MI:SS
США MM-DD-YYYY HH:MI:SS
Международный английский DD-MM-YYYY HH:MI:SS
Великобритания DD/MM/YYYY HH:MI:SS
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 4 / 28
Разница CI и CD
Continuous Integration (непрерывная интеграция) – это практика
разработки программного обеспечения, которая выполняет частые
автоматизированные сборок проекта для скорейшего выявления
потенциальных дефектов и решения интеграционных проблем.
Continuous Delivery (непрерывная доставка) – это практика,
направленная на быстрое развёртывание на продакшене благодаря
различным оптимизациям на ранних этапах процесса разработки.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 5 / 28
Что вы используете для CI? (2011)
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 6 / 28
Travis CI
Travis CI – некоммерческий распределённый веб-сервис для сборки и
тестирования программного обеспечения, использующий GitHub в
качестве хостинга исходного кода.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 7 / 28
Travis CI: плюсы и минусы
Плюсы:
Поддержка основных десктопных платформ:
Windows
Linux
Mac OS X
Облачный хостинг или Docker
Из-коробочная интеграция с GitHub
Бесплатность
Размер и активность пользовательской базы
Минусы:
Не рекомендуется для коммерческих программ
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 8 / 28
Travis CI: интеграция
Для подключения Трэвиса нужно сделать три вещи:
1 Авторизоваться на сайте Трэвиса с помощью OAuth Гитхаба.
2 Добавить Git-хук.
3 Добавить в проект файл конфигурации: .travis.yml.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 9 / 28
Travis CI: пример .travis.yml
language: java
jdk:
- oraclejdk8
branches:
only:
- master
before_install:
- chmod +x gradlew
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 10 / 28
Travis CI: интерфейс
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 11 / 28
Travis CI: GitHub
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 12 / 28
Travis CI: Docker
$ docker run --name travis-debug -dit travisci/ci-jvm
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 13 / 28
Atlassian Bamboo
Bamboo (бамбук) – это коммерческий инструмент непрерывной
интеграции и непрерывного развертывания, который объединяет
автоматизированные сборки, тесты и релизы в единый жизненный цикл.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 14 / 28
Atlassian Bamboo: Главная
Главная страница Bamboo, содержит список планов сборки (build plan).
Каждый план сборки это независимый набор заданий, которые нужно
выполнять с некоторой периодичностью или при выполнении
определенных условий или при запуске вручную.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 15 / 28
Atlassian Bamboo: Текущая активность
Страница "текущая активность"показывает исполнение планов сборки.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 16 / 28
Atlassian Bamboo: My Bamboo
Страница "My Bamboo"содержит список планов, в которых
присутствуют изменения, внесенные текущим пользователем.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 17 / 28
Atlassian Bamboo: Страница плана
Страница плана содержит сводную таблицу предыдущих запусков плана
(билдов), а также графические данные о соотношении успешных и
неудачных билдов
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 18 / 28
Atlassian Bamboo: Task
План в Bamboo состоит из набора стадий (stage), каждая из которых
может содержать одну или несколько работ (job), которые в свою
очередь состоят из заданий (task)
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 19 / 28
Jenkins
Jenkins – проект для непрерывной интеграции с открытым исходным
кодом (лицензия MIT), написанный на Java. Был ответвлён от проекта
Hudson, принадлежащего компании Oracle.
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 20 / 28
Jenkins
Плюсы:
Бесплатный
Полностью настраиваемый
Много уже готовых плагинов
Минусы:
Нужно отдельно задуматься о серверах
Сложная настройка
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 21 / 28
Jenkins
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 22 / 28
Jenkins
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 23 / 28
Jenkins
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 24 / 28
Jenkins
stage "unit test"
node {
git "git@github.com:testuser/your_repo.git"
sh "echo unit test app"
}
stage "test on supported OSes"
parallel (
windows: { node {
sh "echo building on windows now"
}},
mac: { node {
sh "echo building on mac now"
}}
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 25 / 28
Jenkins: Docker
$ docker run -p 8080:8080 
-v /your/home:/var/jenkins_home jenkins
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 26 / 28
Зачёт
Полная посещаемость и одно ДЗ
Один пропуск и два ДЗ
Два пропуска и три ДЗ
...
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 27 / 28
ДЗ 3: Построить полный CI pipeline (подробности на GitHub).
Вопросы?
Замечания?
Дополнения?
Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 28 / 28

Software engineering seminars: jenkins

  • 1.
    Технологии разработки программногообеспечения (практика) Мартынов Семён, Хозяинов Иван Санкт-Петербургского политехнического университета Петра Великого Института компьютерных наук и технологий Кафедра компьютерных систем и программных технологий 16 декабря 2017 г. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 1 / 28
  • 2.
    Содержание 1 Итоги прошлогосеминара Итоги теста Тестирование Разница CI и CD 2 Travis CI 3 Atlassian Bamboo 4 Jenkins 5 Заключение Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 2 / 28
  • 3.
    Итоги теста Всего сданоработ: 20 (+5) Опыт работы с таск-менеджерами: ZenHub? CMake vs Make: согласен с 55% Gradle vs Maven: согласен с 65% Задача на поиск числа: Заработает у 40% Управление ошибками vs. управления задачами: 3 ответа, с 2-я согласен. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 3 / 28
  • 4.
    Тестирование ФИО, Группа? Какие системынепрерывной интеграции я знаю с лекций по ТРПО? Диаграмма Гантта, это про Jira или Redmine? Какие стадии задачи предлагает Jira Task Workflow и почему это не работает? Задача: написать класс для вывода текущей даты и времени в различных форматах. Россия DD.MM.YYYY HH:MI:SS США MM-DD-YYYY HH:MI:SS Международный английский DD-MM-YYYY HH:MI:SS Великобритания DD/MM/YYYY HH:MI:SS Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 4 / 28
  • 5.
    Разница CI иCD Continuous Integration (непрерывная интеграция) – это практика разработки программного обеспечения, которая выполняет частые автоматизированные сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. Continuous Delivery (непрерывная доставка) – это практика, направленная на быстрое развёртывание на продакшене благодаря различным оптимизациям на ранних этапах процесса разработки. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 5 / 28
  • 6.
    Что вы используетедля CI? (2011) Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 6 / 28
  • 7.
    Travis CI Travis CI– некоммерческий распределённый веб-сервис для сборки и тестирования программного обеспечения, использующий GitHub в качестве хостинга исходного кода. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 7 / 28
  • 8.
    Travis CI: плюсыи минусы Плюсы: Поддержка основных десктопных платформ: Windows Linux Mac OS X Облачный хостинг или Docker Из-коробочная интеграция с GitHub Бесплатность Размер и активность пользовательской базы Минусы: Не рекомендуется для коммерческих программ Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 8 / 28
  • 9.
    Travis CI: интеграция Дляподключения Трэвиса нужно сделать три вещи: 1 Авторизоваться на сайте Трэвиса с помощью OAuth Гитхаба. 2 Добавить Git-хук. 3 Добавить в проект файл конфигурации: .travis.yml. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 9 / 28
  • 10.
    Travis CI: пример.travis.yml language: java jdk: - oraclejdk8 branches: only: - master before_install: - chmod +x gradlew Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 10 / 28
  • 11.
    Travis CI: интерфейс МартыновСемён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 11 / 28
  • 12.
    Travis CI: GitHub МартыновСемён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 12 / 28
  • 13.
    Travis CI: Docker $docker run --name travis-debug -dit travisci/ci-jvm Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 13 / 28
  • 14.
    Atlassian Bamboo Bamboo (бамбук)– это коммерческий инструмент непрерывной интеграции и непрерывного развертывания, который объединяет автоматизированные сборки, тесты и релизы в единый жизненный цикл. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 14 / 28
  • 15.
    Atlassian Bamboo: Главная Главнаястраница Bamboo, содержит список планов сборки (build plan). Каждый план сборки это независимый набор заданий, которые нужно выполнять с некоторой периодичностью или при выполнении определенных условий или при запуске вручную. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 15 / 28
  • 16.
    Atlassian Bamboo: Текущаяактивность Страница "текущая активность"показывает исполнение планов сборки. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 16 / 28
  • 17.
    Atlassian Bamboo: MyBamboo Страница "My Bamboo"содержит список планов, в которых присутствуют изменения, внесенные текущим пользователем. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 17 / 28
  • 18.
    Atlassian Bamboo: Страницаплана Страница плана содержит сводную таблицу предыдущих запусков плана (билдов), а также графические данные о соотношении успешных и неудачных билдов Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 18 / 28
  • 19.
    Atlassian Bamboo: Task Планв Bamboo состоит из набора стадий (stage), каждая из которых может содержать одну или несколько работ (job), которые в свою очередь состоят из заданий (task) Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 19 / 28
  • 20.
    Jenkins Jenkins – проектдля непрерывной интеграции с открытым исходным кодом (лицензия MIT), написанный на Java. Был ответвлён от проекта Hudson, принадлежащего компании Oracle. Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 20 / 28
  • 21.
    Jenkins Плюсы: Бесплатный Полностью настраиваемый Много ужеготовых плагинов Минусы: Нужно отдельно задуматься о серверах Сложная настройка Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 21 / 28
  • 22.
    Jenkins Мартынов Семён, ХозяиновИван ТРПО (практика) 16 декабря 2017 г. 22 / 28
  • 23.
    Jenkins Мартынов Семён, ХозяиновИван ТРПО (практика) 16 декабря 2017 г. 23 / 28
  • 24.
    Jenkins Мартынов Семён, ХозяиновИван ТРПО (практика) 16 декабря 2017 г. 24 / 28
  • 25.
    Jenkins stage "unit test" node{ git "git@github.com:testuser/your_repo.git" sh "echo unit test app" } stage "test on supported OSes" parallel ( windows: { node { sh "echo building on windows now" }}, mac: { node { sh "echo building on mac now" }} Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 25 / 28
  • 26.
    Jenkins: Docker $ dockerrun -p 8080:8080 -v /your/home:/var/jenkins_home jenkins Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 26 / 28
  • 27.
    Зачёт Полная посещаемость иодно ДЗ Один пропуск и два ДЗ Два пропуска и три ДЗ ... Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 27 / 28
  • 28.
    ДЗ 3: Построитьполный CI pipeline (подробности на GitHub). Вопросы? Замечания? Дополнения? Мартынов Семён, Хозяинов Иван ТРПО (практика) 16 декабря 2017 г. 28 / 28