Skip to Content
Getting StartedРозуміння рецептів

Розуміння рецептів

BuildRecipe , нормалізована специфікація, яку OpenFactory передає в image pipeline. Chat може допомогти її створити, але рецепт, source snapshots, згенеровані файли та test evidence визначають збірку.

Ментальна модель

Канонічний рецепт має чотири основні шари:

  1. Identity and target: name, description, base image і hardware intent.
  2. Operating system: features, packages, services, users, security, desktop, installer, attachments і startup scripts під os.
  3. Verification: один або кілька scenarios з built-in tests і custom assertions.
  4. Delivery intent: запитані publication destinations і опційні delivery settings.
{ "name": "debian-web-check", "display_name": "Debian Web Check", "description": "Small Debian image with explicit smoke tests.", "base_image": "debian-trixie", "hardware": { "platform": "pc", "architecture": "x86_64", "min_cpu_cores": 2, "min_memory_gb": 4, "min_storage_gb": 16, "nic_count": 1 }, "os": { "features": ["ssh"], "packages": ["curl"], "services": [ { "name": "ssh", "enabled": true, "config": {"port": 22, "disable_password_auth": true} } ], "security": { "hardening_level": "standard", "audit_logging": true } }, "scenarios": [ { "id": "primary-smoke", "name": "Primary image smoke test", "enabled": true, "tests": ["boot", "login", "packages"] } ], "publish_to": ["local"] }

Використовуйте snake_case. Нові інтеграції не повинні надсилати legacy shapes на кшталт baseImage, top-level features або startupScripts.

Три перевірки, три різні відповіді

Schema validation

Валідація відповідає: «Чи має визнані дані прийнятну форму?» Вона не доводить існування пакетів або роботу поведінки. Деякі невідомі поля ігноруються для сумісності, тож validation success може все одно опустити важливий запит.

Завжди порівнюйте повернутий нормалізований рецепт із початковим чатом і вимогами. Відсутній desktop, application, installer, attachment або test , дефект рецепта, навіть якщо validation каже valid.

Build evidence

Успішна збірка відповідає: «Чи pipeline створив артефакт?» Вона не доводить, що кожна задумана feature потрапила в образ. Перегляньте package inventory, source provenance, warnings і build-stage evidence.

Guest verification

Guest tests відповідають на вузькі runtime-питання: чи VM завантажилася, чи сервіс active, чи порт слухає, чи файл має очікуваний вміст, чи застосунок запустився. Успішна assertion підтримує лише поведінку, яку вона реально спостерігала.

Security settings , це intent

Прийняті значення hardening_level: minimal, standard і strict, але ці мітки не є переносними compliance profiles. Target generators можуть інтерпретувати їх по-різному. Якщо потрібен benchmark, оберіть точний applicable benchmark і зберігайте per-control results; не виводьте CIS conformance з strict.

Аналогічно, disk_encryption, audit_logging, SELinux, fail2ban, Secure Boot, dm-verity і installer settings потребують відповідних artifact і runtime tests.

Chat і власність рецепта

Коли ви валідуєте або редагуєте chat-authored рецепт, існуюча розмова лишається частиною authoring context. Validation має уточнювати поточний рецепт, а не тихо замінювати його generic default. Незважаючи на це, нормалізований рецепт , фінальний checkpoint перед build.

Для кожної суттєвої вимоги:

  • знайдіть відповідне нормалізоване поле;
  • підтвердіть значення та target scope;
  • додайте assertion, де можливий runtime proof; та
  • deployment-only роботу залишайте явним warning, а не вдавайте, що вона відбулася під час image build.

Checklist перегляду

  • Чи правильні base image і architecture?
  • Чи присутні всі запитані desktop і application features?
  • Чи external sources закріплені та ліцензовані для призначення?
  • Чи секрети відсутні в збережених полях рецепта та scripts?
  • Чи installer налаштований і протестований на одноразовому диску, якщо запитано?
  • Чи scenarios тестують фактичні acceptance criteria?
  • Чи unsupported або deployment-time вимоги явно позначені?

Див. Recipe Schema для довідника полів і Your First Build для workflow збірки та завантаження.