Приемы Сontinuous integration при разработке приложений на caché

18
Приемы Сontinuous Integration при разработке приложений на Caché Лебедюк Эдуард

Upload: intersystems-cee

Post on 16-Feb-2017

110 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Приемы Сontinuous Integration при разработке приложений на Caché

Приемы Сontinuous Integration при разработке приложений на Caché

Лебедюк Эдуард

Page 2: Приемы Сontinuous Integration при разработке приложений на Caché

Цикл разработки ПО

Page 3: Приемы Сontinuous Integration при разработке приложений на Caché

Система контроля версий ПО для облегчения работы с изменяющейся информацией

Page 4: Приемы Сontinuous Integration при разработке приложений на Caché

• История изменений

• Откат нежелательных изменений

• Совместная работа

• Код не теряется

• Нерабочие фичи не ломают основной билд

Зачем нужен контроль версий?

Page 5: Приемы С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

Page 6: Приемы Сontinuous Integration при разработке приложений на Caché

Continuous Integration Практика разработки программного обеспечения для скорейшего выявления и решения интеграционных проблем

Page 7: Приемы Сontinuous Integration при разработке приложений на Caché

• Автоматизация развёртки проекта

• Автоматизация тестирования

• Лень

• «Кто сломал билд?»

Зачем нужен CI

Page 8: Приемы Сontinuous Integration при разработке приложений на Caché

Continuous Integration –рабочий процесс

Page 9: Приемы Сontinuous Integration при разработке приложений на Caché

Функциональные модули CI решения

• Integration

– Основная информация о репозитории и цели (Откуда брать код? Что с ним делать?)

• Activator

– Создание задания/хука/прочая, инициализирующего обновление

• Connector

– Реализация интерфейса получения файлов из системы контроля версий

• Parser

– Парсинг содержимого репозитория и передача его компилятору

• Action

– Хранение необходимого для обновления кода, коллбэки

• Update

– Дата/время обновления, идентификатор, статус действий, компиляции, юнит-тестов

Page 10: Приемы Сontinuous Integration при разработке приложений на Caché

• Jenkins

• Hudson

• Bamboo

• …

Примеры CI систем

Page 11: Приемы Сontinuous Integration при разработке приложений на Caché

Cache GitHub CI

Page 12: Приемы Сontinuous Integration при разработке приложений на Caché

• Автоматическое получение репозитория GitHub инстансами Caché

• Создание системы CI на COS

Цели проекта

Page 13: Приемы Сontinuous Integration при разработке приложений на Caché

Обновление с помощью task

Page 14: Приемы Сontinuous Integration при разработке приложений на Caché

PreCompile

Compile

PostCompile

UnitTests

Процесс обновления для hook/webhook

Page 15: Приемы Сontinuous Integration при разработке приложений на Caché

Обновление с помощью 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é

• Аналогично, но:

– Нужен логин-пароль с администраторским доступом к репозиторию (в начале)

– Нужен сервер со внешним статичным ip

• Преимущества

– Обновления мгновенные

– Нет ненужных обновлений

Обновление с помощью webhook

Код:

Set hook.Username="GitHub Username"

Set hook.Password="GitHub Password"

W hook.CreateHook()

Do hook.%Save()

Page 17: Приемы Сontinuous Integration при разработке приложений на Caché

• Куб

• Дэшборд

• Листинг – История коммитов

– Автор

– Статус

– Время начала

– Время завершения

– Длительность

– SHA последнего коммита

• Куб обновляется автоматически после изменения hook

Мониторинг

Page 18: Приемы Сontinuous Integration при разработке приложений на Caché

Конец https://github.com/intersystems-ru/CacheGitHubCI