Приемы Сontinuous integration при разработке приложений на caché
TRANSCRIPT
![Page 1: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/1.jpg)
Приемы Сontinuous Integration при разработке приложений на Caché
Лебедюк Эдуард
![Page 2: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/2.jpg)
Цикл разработки ПО
![Page 3: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/3.jpg)
Система контроля версий ПО для облегчения работы с изменяющейся информацией
![Page 4: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/4.jpg)
• История изменений
• Откат нежелательных изменений
• Совместная работа
• Код не теряется
• Нерабочие фичи не ломают основной билд
Зачем нужен контроль версий?
![Page 5: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/5.jpg)
• Хуки на все основные действия (компиляция, нажатие кнопок, изменение класса)
• Экспорт/импорт
– CLS - Классы
– CSP – Веб-страницы
– CSR - Правила
– MAC - Рутины
– INT – код
– BAS - Basic routines
• Можно расширять
• Есть открытые примеры реализации
– Cache-tortoise-git
– Cache-source-control
– SCMin
Что есть в Caché?
– INC – файлы препроцессора
– GBL - Глобалы
– PRJ - Проекты
– OBJ – Скомпилированный код
– PKG – Проекты
– DFI – Объекты DeepSee
![Page 6: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/6.jpg)
Continuous Integration Практика разработки программного обеспечения для скорейшего выявления и решения интеграционных проблем
![Page 7: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/7.jpg)
• Автоматизация развёртки проекта
• Автоматизация тестирования
• Лень
• «Кто сломал билд?»
Зачем нужен CI
![Page 8: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/8.jpg)
Continuous Integration –рабочий процесс
![Page 9: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/9.jpg)
Функциональные модули CI решения
• Integration
– Основная информация о репозитории и цели (Откуда брать код? Что с ним делать?)
• Activator
– Создание задания/хука/прочая, инициализирующего обновление
• Connector
– Реализация интерфейса получения файлов из системы контроля версий
• Parser
– Парсинг содержимого репозитория и передача его компилятору
• Action
– Хранение необходимого для обновления кода, коллбэки
• Update
– Дата/время обновления, идентификатор, статус действий, компиляции, юнит-тестов
![Page 10: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/10.jpg)
• Jenkins
• Hudson
• Bamboo
• …
Примеры CI систем
![Page 11: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/11.jpg)
Cache GitHub CI
![Page 12: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/12.jpg)
• Автоматическое получение репозитория GitHub инстансами Caché
• Создание системы CI на COS
Цели проекта
![Page 13: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/13.jpg)
Обновление с помощью task
![Page 14: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/14.jpg)
PreCompile
Compile
PostCompile
UnitTests
Процесс обновления для hook/webhook
![Page 15: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/15.jpg)
Обновление с помощью 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()
![Page 16: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/16.jpg)
• Аналогично, но:
– Нужен логин-пароль с администраторским доступом к репозиторию (в начале)
– Нужен сервер со внешним статичным ip
• Преимущества
– Обновления мгновенные
– Нет ненужных обновлений
Обновление с помощью webhook
Код:
Set hook.Username="GitHub Username"
Set hook.Password="GitHub Password"
W hook.CreateHook()
Do hook.%Save()
![Page 17: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/17.jpg)
• Куб
• Дэшборд
• Листинг – История коммитов
– Автор
– Статус
– Время начала
– Время завершения
– Длительность
– SHA последнего коммита
• Куб обновляется автоматически после изменения hook
Мониторинг
![Page 18: Приемы Сontinuous Integration при разработке приложений на Caché](https://reader033.vdocuments.pub/reader033/viewer/2022042517/58a5a42f1a28ab1a628b48d7/html5/thumbnails/18.jpg)
Конец https://github.com/intersystems-ru/CacheGitHubCI