Ідемпотентне розгортання регламенту реєстру
1. Введення
Ця документація описує процес ідемпотентного розгортання регламенту реєстру, який розв’язує проблему неконсистентності стану регламенту через ігнорування неуспішних кроків у попередніх запусках пайплайну. Мета цього процесу - забезпечити, що всі зміни в регламенті застосовуються надійно та послідовно.
2. Проблематика
У попередніх версіях пайплайну розгортання, певні кроки активувались тільки при внесенні змін у відповідні директорії регламенту. Якщо крок був неуспішним, але у поточному коміті змін не було, цей крок ігнорувався і вважався успішним. Це створювало проблеми з виявленням і виправленням помилок.
3. Ідемпотентний підхід
3.1. Реалізація та збереження чексум
На Платформі впроваджено ідемпотентний підхід, що включає:
- 
Порівняння станів регламенту: поточний стан регламенту порівнюється зі станом на момент останнього успішного виконання кроку. 
- 
Генерування та зберігання чексум: чексуми директорій та файлів регламенту генеруються з використанням алгоритму шифрування SHA256та зберігаються як секрети.
- Перегляд збережених чексум:
- 
Адміністратор реєстру може переглянути ці секрети через Вебінтерфейс управління кластером OpenShift: - 
Відкрийте консоль OpenShift . 
- 
Перейдіть до розділу Workloads > Secrets. 
- 
Знайдіть секрет registry-regulations-state. У розділі Data ви зможете переглянути чексуми відповідних компонентів розгортання регламенту. 
 
- 
3.2. Практичне застосування
- 
Внесіть зміни до версії-кандидата регламенту, наприклад, створіть новий бізнес-процес (див. детальніше — Створення бізнес-процесів). 
- 
Перевірте та застосуйте зміни до мастер-версії (див. детальніше — Перегляд та управління налаштуваннями версії-кандидата). - Jenkins і MASTER-Build-пайплайн:
 
- 
Перейдіть до сервісу Jenkins за посиланням у Кабінеті адміністратора регламентів.  
- 
У пайплайні MASTER-Build-registry-regulations кожен крок перевіряє чексуми файлів директорій.  Крок розгортання повторно запускається, якщо: Крок розгортання повторно запускається, якщо:- 
У секреті відсутній крок з таким ім’ям. 
- 
Чексума для хоча б однієї з директорій відрізняється від чексуми в секреті. 
- 
Відсутня інформація про чексуму файлу у секреті. 
 - Залежні директорії:
- 
Перевірка чексум для залежних директорій, які використовуються у декількох кроках, відбувається окремо для кожного кроку. 
 
- 
3.3. Примусове розгортання
Розробники регламенту мають можливість активувати примусове розгортання всіх кроків у пайплайні завдяки параметру FULL_DEPLOY:
| Запуск пайплайну публікації регламенту — MASTER-Build-registry-regulations— з активованою опцієюFULL_DEPLOYдозволяє правильно і повністю розгорнути регламент. | 

4. Відстеження змін та збереження даних після розгортання
У нашому прикладі створено бізнес-процес, а тому зміни стосуються директорії bpmn. Відповідно коли в директорію bpmn регламенту реєстру вносяться зміни, автоматично запускається крок upload-business-process-changes. Ви можете побачити відповідні записи у логах виконання пайнлайну.
 
Інші кроки у пайплайні маркуються як неактивні, якщо відповідні зміни в директоріях не виявлені. Це також відображається у логах пайплайну.
 
- Після кроку розгортання:
- 
- 
Запускається утиліта, що зберігає назву кроку, перелік директорій та чексуми у форматі JSON до секрету. Приклад. Збереження чексуми до секрету для схеми бізнес-процесу у bpmn{ "bpmn/a-new-bp-test.bpmn": "d206ee947a1f92946401a908f713398066b46f4c85e88c2bff9c27540a15461c" }
- 
Після успішного збереження, статус кроку розгортання позначається як успішно пройдений. 
 
- 
Завдяки цьому підходу, розробник може бути впевненим у правильному застосуванні всіх змін до регламенту реєстру, мінімізуючи ризики неконсистентності.