SlideShare a Scribd company logo
Приемы Сontinuous Integration
при разработке приложений на Caché
Лебедюк Эдуард
Цикл разработки ПО
Система контроля версий
ПО для облегчения работы с изменяющейся информацией
•  История изменений
•  Откат нежелательных изменений
•  Совместная работа
•  Код не теряется
•  Нерабочие фичи не ломают основной билд
Зачем нужен контроль версий?
•  Хуки на все основные действия (компиляция, нажатие кнопок, изменение класса)
•  Экспорт/импорт
–  CLS - Классы
–  CSP – Веб-страницы
–  CSR - Правила
–  MAC - Рутины
–  INT – код
–  BAS - Basic routines
•  Можно расширять
•  Есть открытые примеры реализации
–  Cache-tortoise-git
–  Cache-source-control
–  SCMin
Что есть в Caché?
–  INC – файлы препроцессора
–  GBL - Глобалы
–  PRJ - Проекты
–  OBJ – Скомпилированный код
–  PKG – Проекты
–  DFI – Объекты DeepSee
Continuous Integration
Практика разработки программного обеспечения для скорейшего
выявления и решения интеграционных проблем
•  Автоматизация развёртки проекта
•  Автоматизация тестирования
•  Лень
•  «Кто сломал билд?»
Зачем нужен CI
Continuous Integration –рабочий процесс
Функциональные модули CI решения
•  Integration
–  Основная информация о репозитории и цели (Откуда брать код? Что с ним делать?)
•  Activator
–  Создание задания/хука/прочая, инициализирующего обновление
•  Connector
–  Реализация интерфейса получения файлов из системы контроля версий
•  Parser
–  Парсинг содержимого репозитория и передача его компилятору
•  Action
–  Хранение необходимого для обновления кода, коллбэки
•  Update
–  Дата/время обновления, идентификатор, статус действий, компиляции, юнит-тестов
•  Jenkins
•  Hudson
•  Bamboo
•  …
Примеры CI систем
Cache GitHub CI
•  Автоматическое получение репозитория GitHub инстансами Caché
•  Создание системы CI на COS
Цели проекта
Обновление с помощью task
PreCompile
Compile
PostCompile
UnitTests
Процесс обновления для hook/webhook
Обновление с помощью hook
Set hook=##class(CacheGitHubCI.Hook).%New()
Set hook.Namespace="USER"
Set hook.Owner="intersystems-ru"
Set hook.Repository="test"
Set hook.Branch="master"
Set a1 = ##class(CacheGitHubCI.Action).%New()
Set a1.Type="code"
Set a1.Params="s ^test($zdt($Now(-180)))=""started compiling"""
Set hook.PreCompile=a1
Set a2 = ##class(CacheGitHubCI.Action).%New()
Set a2.Type="classmethod"
Set a2.Namespace="USER"
Set a2.Params="Fileserver.Broker,Init,1"
Set hook.PostCompile=a2
W hook.CreateTask(60)
W hook.%Save()
•  Аналогично, но:
–  Нужен логин-пароль с администраторским доступом к репозиторию (в начале)
–  Нужен сервер со внешним статичным ip
•  Преимущества
–  Обновления мгновенные
–  Нет ненужных обновлений
Обновление с помощью webhook
Код:
Set hook.Username="GitHub Username"
Set hook.Password="GitHub Password"
W hook.CreateHook()
Do hook.%Save()
•  Куб
•  Дэшборд
•  Листинг – История
коммитов
–  Автор
–  Статус
–  Время начала
–  Время завершения
–  Длительность
–  SHA последнего
коммита
•  Куб обновляется
автоматически после
изменения hook
Мониторинг
Конец
https://github.com/intersystems-ru/CacheGitHubCI
Ad

More Related Content

What's hot (15)

Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Ontico
 
Workflows в Express 42
Workflows в Express 42Workflows в Express 42
Workflows в Express 42
Igor Kurochkin
 
Сергей Орлов
Сергей ОрловСергей Орлов
Сергей Орлов
CodeFest
 
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Ontico
 
Игорь Кашкута
Игорь КашкутаИгорь Кашкута
Игорь Кашкута
CodeFest
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула
Fwdays
 
Управление контейнерами в облаках
 Управление контейнерами в облаках Управление контейнерами в облаках
Управление контейнерами в облаках
Aleksey Zalesov
 
Александр Белоцерковский
Александр БелоцерковскийАлександр Белоцерковский
Александр Белоцерковский
CodeFest
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Ontico
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
CodeFest
 
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
 
Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...
Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...
Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...
GeeksLab Odessa
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере Git
SCINO
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
 
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
2ГИС Технологии
 
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Ontico
 
Workflows в Express 42
Workflows в Express 42Workflows в Express 42
Workflows в Express 42
Igor Kurochkin
 
Сергей Орлов
Сергей ОрловСергей Орлов
Сергей Орлов
CodeFest
 
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Ontico
 
Игорь Кашкута
Игорь КашкутаИгорь Кашкута
Игорь Кашкута
CodeFest
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула
Fwdays
 
Управление контейнерами в облаках
 Управление контейнерами в облаках Управление контейнерами в облаках
Управление контейнерами в облаках
Aleksey Zalesov
 
Александр Белоцерковский
Александр БелоцерковскийАлександр Белоцерковский
Александр Белоцерковский
CodeFest
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Ontico
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
CodeFest
 
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
 
Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...
Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...
Java/Scala Lab: Владимир Илюшенко - Jelastic PaaS v2.5 Capabilities and Benef...
GeeksLab Odessa
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере Git
SCINO
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
 
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
2ГИС Технологии
 

Similar to Caché github continuous intergration (20)

C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.
Igor Shkulipa
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
Technopark
 
Wgforge CI/CD
Wgforge CI/CDWgforge CI/CD
Wgforge CI/CD
Кузьмицкий Александр
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применение
devclub
 
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере BadooРИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
Тарасов Константин
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
Technopark
 
Continuous integration with Jenkins.
Continuous integration with Jenkins.Continuous integration with Jenkins.
Continuous integration with Jenkins.
robotbot
 
Project under control
Project under controlProject under control
Project under control
Alex Simanovich
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
Provectus
 
Software engineering seminars: jenkins
Software engineering seminars: jenkinsSoftware engineering seminars: jenkins
Software engineering seminars: jenkins
Semen Martynov
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
MoscowJS
 
Bachelors Diploma Slides Short Version
Bachelors Diploma Slides Short VersionBachelors Diploma Slides Short Version
Bachelors Diploma Slides Short Version
Denis Zakharov
 
Continuous Integration for C++ engineers
Continuous Integration for C++ engineersContinuous Integration for C++ engineers
Continuous Integration for C++ engineers
corehard_by
 
Continuous Integration для C++ разработчика
Continuous Integration для C++ разработчикаContinuous Integration для C++ разработчика
Continuous Integration для C++ разработчика
Pavel Filonov
 
Continuous Integration(как мы подружили frontend и backend)
Continuous Integration(как мы подружили frontend и backend)Continuous Integration(как мы подружили frontend и backend)
Continuous Integration(как мы подружили frontend и backend)
Talks&Works
 
Software craftsmanship 8
Software craftsmanship 8Software craftsmanship 8
Software craftsmanship 8
Pavel Veinik
 
Continuous integration, или как мы подружили front end и back-end
Continuous integration,  или как мы подружили  front end и back-endContinuous integration,  или как мы подружили  front end и back-end
Continuous integration, или как мы подружили front end и back-end
wlbl
 
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
 
Git for you
Git for youGit for you
Git for you
Pavel Alexeev
 
Agile foss tools
Agile foss toolsAgile foss tools
Agile foss tools
alexyakima
 
C# Web. Занятие 14.
C# Web. Занятие 14.C# Web. Занятие 14.
C# Web. Занятие 14.
Igor Shkulipa
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
Technopark
 
Непрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применениеНепрерывная интеграция. Практическое применение
Непрерывная интеграция. Практическое применение
devclub
 
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере BadooРИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo
Тарасов Константин
 
Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5 Тестирование осень 2013 лекция 5
Тестирование осень 2013 лекция 5
Technopark
 
Continuous integration with Jenkins.
Continuous integration with Jenkins.Continuous integration with Jenkins.
Continuous integration with Jenkins.
robotbot
 
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs..."How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovs...
Provectus
 
Software engineering seminars: jenkins
Software engineering seminars: jenkinsSoftware engineering seminars: jenkins
Software engineering seminars: jenkins
Semen Martynov
 
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
MoscowJS
 
Bachelors Diploma Slides Short Version
Bachelors Diploma Slides Short VersionBachelors Diploma Slides Short Version
Bachelors Diploma Slides Short Version
Denis Zakharov
 
Continuous Integration for C++ engineers
Continuous Integration for C++ engineersContinuous Integration for C++ engineers
Continuous Integration for C++ engineers
corehard_by
 
Continuous Integration для C++ разработчика
Continuous Integration для C++ разработчикаContinuous Integration для C++ разработчика
Continuous Integration для C++ разработчика
Pavel Filonov
 
Continuous Integration(как мы подружили frontend и backend)
Continuous Integration(как мы подружили frontend и backend)Continuous Integration(как мы подружили frontend и backend)
Continuous Integration(как мы подружили frontend и backend)
Talks&Works
 
Software craftsmanship 8
Software craftsmanship 8Software craftsmanship 8
Software craftsmanship 8
Pavel Veinik
 
Continuous integration, или как мы подружили front end и back-end
Continuous integration,  или как мы подружили  front end и back-endContinuous integration,  или как мы подружили  front end и back-end
Continuous integration, или как мы подружили front end и back-end
wlbl
 
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
 
Agile foss tools
Agile foss toolsAgile foss tools
Agile foss tools
alexyakima
 
Ad

More from InterSystems (20)

InterSystems Developers Community Update Global Summit 2019
InterSystems Developers Community Update Global Summit 2019InterSystems Developers Community Update Global Summit 2019
InterSystems Developers Community Update Global Summit 2019
InterSystems
 
InterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems IRIS Data Platfrom: Sharding and ScalabilityInterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems
 
DeepSee Web: Angular Render for InterSystems DeepSee Dashboards
DeepSee Web: Angular Render for InterSystems DeepSee DashboardsDeepSee Web: Angular Render for InterSystems DeepSee Dashboards
DeepSee Web: Angular Render for InterSystems DeepSee Dashboards
InterSystems
 
InterSystems Caché REST Forms
InterSystems Caché REST FormsInterSystems Caché REST Forms
InterSystems Caché REST Forms
InterSystems
 
InterSystems Caché Localization Manager
InterSystems Caché Localization Manager InterSystems Caché Localization Manager
InterSystems Caché Localization Manager
InterSystems
 
Source Control Addon for InterSystems Caché with UDL support
Source Control Addon for InterSystems Caché with UDL supportSource Control Addon for InterSystems Caché with UDL support
Source Control Addon for InterSystems Caché with UDL support
InterSystems
 
DeepSee SYSMON - InterSystems Caché System Monitoring Analytics
DeepSee SYSMON - InterSystems Caché System Monitoring AnalyticsDeepSee SYSMON - InterSystems Caché System Monitoring Analytics
DeepSee SYSMON - InterSystems Caché System Monitoring Analytics
InterSystems
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
InterSystems
 
InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015
InterSystems
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
InterSystems
 
InterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queueInterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems
 
Deep see mobile meetup красноярск
Deep see mobile meetup красноярскDeep see mobile meetup красноярск
Deep see mobile meetup красноярск
InterSystems
 
InterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutionsInterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutions
InterSystems
 
Enterprise Serial Bus on InterSystems Ensemble
Enterprise Serial Bus on InterSystems EnsembleEnterprise Serial Bus on InterSystems Ensemble
Enterprise Serial Bus on InterSystems Ensemble
InterSystems
 
Интеграционная шина на базе InterSystems Ensemble
Интеграционная шина на базе InterSystems EnsembleИнтеграционная шина на базе InterSystems Ensemble
Интеграционная шина на базе InterSystems Ensemble
InterSystems
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в Unicode
InterSystems
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
InterSystems
 
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
InterSystems
 
Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014
InterSystems
 
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
InterSystems
 
InterSystems Developers Community Update Global Summit 2019
InterSystems Developers Community Update Global Summit 2019InterSystems Developers Community Update Global Summit 2019
InterSystems Developers Community Update Global Summit 2019
InterSystems
 
InterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems IRIS Data Platfrom: Sharding and ScalabilityInterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems
 
DeepSee Web: Angular Render for InterSystems DeepSee Dashboards
DeepSee Web: Angular Render for InterSystems DeepSee DashboardsDeepSee Web: Angular Render for InterSystems DeepSee Dashboards
DeepSee Web: Angular Render for InterSystems DeepSee Dashboards
InterSystems
 
InterSystems Caché REST Forms
InterSystems Caché REST FormsInterSystems Caché REST Forms
InterSystems Caché REST Forms
InterSystems
 
InterSystems Caché Localization Manager
InterSystems Caché Localization Manager InterSystems Caché Localization Manager
InterSystems Caché Localization Manager
InterSystems
 
Source Control Addon for InterSystems Caché with UDL support
Source Control Addon for InterSystems Caché with UDL supportSource Control Addon for InterSystems Caché with UDL support
Source Control Addon for InterSystems Caché with UDL support
InterSystems
 
DeepSee SYSMON - InterSystems Caché System Monitoring Analytics
DeepSee SYSMON - InterSystems Caché System Monitoring AnalyticsDeepSee SYSMON - InterSystems Caché System Monitoring Analytics
DeepSee SYSMON - InterSystems Caché System Monitoring Analytics
InterSystems
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
InterSystems
 
InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015
InterSystems
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
InterSystems
 
InterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queueInterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems
 
Deep see mobile meetup красноярск
Deep see mobile meetup красноярскDeep see mobile meetup красноярск
Deep see mobile meetup красноярск
InterSystems
 
InterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutionsInterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutions
InterSystems
 
Enterprise Serial Bus on InterSystems Ensemble
Enterprise Serial Bus on InterSystems EnsembleEnterprise Serial Bus on InterSystems Ensemble
Enterprise Serial Bus on InterSystems Ensemble
InterSystems
 
Интеграционная шина на базе InterSystems Ensemble
Интеграционная шина на базе InterSystems EnsembleИнтеграционная шина на базе InterSystems Ensemble
Интеграционная шина на базе InterSystems Ensemble
InterSystems
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в Unicode
InterSystems
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
InterSystems
 
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
InterSystems
 
Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014
InterSystems
 
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
InterSystems
 
Ad

Caché github continuous intergration

  • 1. Приемы Сontinuous Integration при разработке приложений на Caché Лебедюк Эдуард
  • 3. Система контроля версий ПО для облегчения работы с изменяющейся информацией
  • 4. •  История изменений •  Откат нежелательных изменений •  Совместная работа •  Код не теряется •  Нерабочие фичи не ломают основной билд Зачем нужен контроль версий?
  • 5. •  Хуки на все основные действия (компиляция, нажатие кнопок, изменение класса) •  Экспорт/импорт –  CLS - Классы –  CSP – Веб-страницы –  CSR - Правила –  MAC - Рутины –  INT – код –  BAS - Basic routines •  Можно расширять •  Есть открытые примеры реализации –  Cache-tortoise-git –  Cache-source-control –  SCMin Что есть в Caché? –  INC – файлы препроцессора –  GBL - Глобалы –  PRJ - Проекты –  OBJ – Скомпилированный код –  PKG – Проекты –  DFI – Объекты DeepSee
  • 6. Continuous Integration Практика разработки программного обеспечения для скорейшего выявления и решения интеграционных проблем
  • 7. •  Автоматизация развёртки проекта •  Автоматизация тестирования •  Лень •  «Кто сломал билд?» Зачем нужен CI
  • 9. Функциональные модули CI решения •  Integration –  Основная информация о репозитории и цели (Откуда брать код? Что с ним делать?) •  Activator –  Создание задания/хука/прочая, инициализирующего обновление •  Connector –  Реализация интерфейса получения файлов из системы контроля версий •  Parser –  Парсинг содержимого репозитория и передача его компилятору •  Action –  Хранение необходимого для обновления кода, коллбэки •  Update –  Дата/время обновления, идентификатор, статус действий, компиляции, юнит-тестов
  • 10. •  Jenkins •  Hudson •  Bamboo •  … Примеры CI систем
  • 12. •  Автоматическое получение репозитория GitHub инстансами Caché •  Создание системы CI на COS Цели проекта
  • 15. Обновление с помощью hook Set hook=##class(CacheGitHubCI.Hook).%New() Set hook.Namespace="USER" Set hook.Owner="intersystems-ru" Set hook.Repository="test" Set hook.Branch="master" Set a1 = ##class(CacheGitHubCI.Action).%New() Set a1.Type="code" Set a1.Params="s ^test($zdt($Now(-180)))=""started compiling""" Set hook.PreCompile=a1 Set a2 = ##class(CacheGitHubCI.Action).%New() Set a2.Type="classmethod" Set a2.Namespace="USER" Set a2.Params="Fileserver.Broker,Init,1" Set hook.PostCompile=a2 W hook.CreateTask(60) W hook.%Save()
  • 16. •  Аналогично, но: –  Нужен логин-пароль с администраторским доступом к репозиторию (в начале) –  Нужен сервер со внешним статичным ip •  Преимущества –  Обновления мгновенные –  Нет ненужных обновлений Обновление с помощью webhook Код: Set hook.Username="GitHub Username" Set hook.Password="GitHub Password" W hook.CreateHook() Do hook.%Save()
  • 17. •  Куб •  Дэшборд •  Листинг – История коммитов –  Автор –  Статус –  Время начала –  Время завершения –  Длительность –  SHA последнего коммита •  Куб обновляется автоматически после изменения hook Мониторинг