SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Приемы С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

Weitere ähnliche Inhalte

Was ist angesagt?

Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Ontico
 

Was ist angesagt? (15)

Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
Продуктовые проблемы при создании очередной Docker PaaS / Владимир Ярцев (Cas...
 
Workflows в Express 42
Workflows в Express 42Workflows в Express 42
Workflows в Express 42
 
Сергей Орлов
Сергей ОрловСергей Орлов
Сергей Орлов
 
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
Chef по обе стороны Bamboo / Артем Семенов (Align Technology)
 
Игорь Кашкута
Игорь КашкутаИгорь Кашкута
Игорь Кашкута
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула
 
Управление контейнерами в облаках
 Управление контейнерами в облаках Управление контейнерами в облаках
Управление контейнерами в облаках
 
Александр Белоцерковский
Александр БелоцерковскийАлександр Белоцерковский
Александр Белоцерковский
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
 
Максим Пугачев
Максим ПугачевМаксим Пугачев
Максим Пугачев
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
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...
 
Scino: DVCS на примере Git
Scino: DVCS на примере GitScino: DVCS на примере Git
Scino: DVCS на примере Git
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
«GitHub Flow — немного сложнее, чем на бумаге», Александр Бирюков
 

Ähnlich wie Caché github continuous intergration

DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.
Alexander Titov
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
DevDay
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
 

Ähnlich wie Caché github continuous intergration (20)

Wgforge CI/CD
Wgforge CI/CDWgforge CI/CD
Wgforge CI/CD
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
Jiramania презентации @augspb
Jiramania презентации   @augspbJiramania презентации   @augspb
Jiramania презентации @augspb
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Процессы разработки в Яндексе
Процессы разработки в ЯндексеПроцессы разработки в Яндексе
Процессы разработки в Яндексе
 
DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.DevOps в Agile среде. Как, почему и когда инструменты помогают.
DevOps в Agile среде. Как, почему и когда инструменты помогают.
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 
Решения сообщества для SharePoint
Решения сообщества для SharePointРешения сообщества для SharePoint
Решения сообщества для SharePoint
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
Непрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в ЯндексеНепрерывная интеграция Python-проектов в Яндексе
Непрерывная интеграция Python-проектов в Яндексе
 
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous DeliveryJenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
 
Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)Cистемы автоматической сборки проектов (Полина Фоминых)
Cистемы автоматической сборки проектов (Полина Фоминых)
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++Seminar: Эффективное использование среды разработки и компилятора C++
Seminar: Эффективное использование среды разработки и компилятора C++
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"Леонид Васильев "Python в инфраструктуре поиска"
Леонид Васильев "Python в инфраструктуре поиска"
 
владивосток форум новости технологий 2015
владивосток форум новости технологий 2015владивосток форум новости технологий 2015
владивосток форум новости технологий 2015
 

Mehr von InterSystems

Mehr von 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 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
 
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 Caché REST Forms
InterSystems Caché REST FormsInterSystems Caché REST Forms
InterSystems Caché REST Forms
 
InterSystems Caché Localization Manager
InterSystems Caché Localization Manager InterSystems Caché Localization Manager
InterSystems Caché Localization Manager
 
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
 
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 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 news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015
 
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 Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queueInterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queue
 
Deep see mobile meetup красноярск
Deep see mobile meetup красноярскDeep see mobile meetup красноярск
Deep see mobile meetup красноярск
 
InterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutionsInterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutions
 
Enterprise Serial Bus on InterSystems Ensemble
Enterprise Serial Bus on InterSystems EnsembleEnterprise Serial Bus on InterSystems Ensemble
Enterprise Serial Bus on InterSystems Ensemble
 
Интеграционная шина на базе InterSystems Ensemble
Интеграционная шина на базе InterSystems EnsembleИнтеграционная шина на базе InterSystems Ensemble
Интеграционная шина на базе InterSystems Ensemble
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в Unicode
 
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
 
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
 
Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014
 
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
 

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 Мониторинг