Skip to Content
Getting StartedFörstå recept

Förstå recept

En BuildRecipe är den normaliserade specifikation som OpenFactory skickar till image-pipelinen. Chat kan hjälpa till att skriva den, men receptet, käll-snapshots, genererade filer och testbevis definierar en build.

Mental modell

Det kanoniska receptet har fyra huvudlager:

  1. Identitet och mål: namn, beskrivning, basimage och hårdvaruavsikt.
  2. Operativsystem: funktioner, paket, tjänster, användare, säkerhet, skrivbord, installer, bilagor och startskript under os.
  3. Verifiering: ett eller flera scenarier med inbyggda tester och anpassade assertioner.
  4. Leveransavsikt: begärda publiceringsmål och valfria leveransinställningar.
{ "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"] }

Använd snake_case. Nya integrationer ska inte skicka legacy-former som baseImage, top-level features eller startupScripts.

Tre kontroller, tre olika svar

Schemavalidering

Validering svarar: „Har de igenkända uppgifterna en acceptabel form?” Den bevisar varken att paket finns eller att beteende fungerar. Vissa okända fält ignoreras av kompatibilitetsskäl, så lyckad validering kan ändå utelämna en viktig begäran.

Jämför alltid det returnerade normaliserade receptet med ursprunglig chat och krav. Saknad skrivbordsmiljö, applikation, installer, bilaga eller test är ett receptfel även om valideringen säger valid.

Buildbevis

En lyckad build svarar: „Producerade pipelinen en artefakt?” Den bevisar inte att varje avsedd funktion hamnade i imagen. Granska paketinventering, källhärkomst, varningar och bevis från build-steg.

Gästverifiering

Gästtester svarar på smala runtime-frågor: om VM:en startade, en tjänst är aktiv, en port lyssnar, en fil har förväntat innehåll eller en applikation startade. En godkänd assertion stödjer bara det beteende som faktiskt observerades.

Säkerhetsinställningar är avsikt

De accepterade värdena för hardening_level är minimal, standard och strict, men etiketterna är inte portabla compliance-profiler. Målgeneratorer kan tolka dem olika. Om du behöver en benchmark, välj exakt rätt benchmark och behåll resultat per control; dra inte slutsats om CIS-efterlevnad från strict.

På samma sätt kräver disk_encryption, audit_logging, SELinux, fail2ban, Secure Boot, dm-verity och installer-inställningar matchande artefakt- och runtime-tester.

Chat och receptägarskap

När du validerar eller redigerar ett chat-skrivet recept förblir den befintliga konversationen en del av authoring-kontexten. Validering ska förfina det aktuella receptet, inte tyst ersätta det med ett generiskt standardvärde. Ändå är det normaliserade receptet sista kontrollpunkten före build.

För varje väsentligt krav:

  • hitta motsvarande normaliserat fält;
  • bekräfta värde och målomfattning;
  • lägg till en assertion där runtime-bevis är möjligt; och
  • bevara deployment-only arbete som explicit varning i stället för att låtsas att det hände under image-build.

Granskningschecklista

  • Stämmer basimage och arkitektur?
  • Finns alla begärda skrivbords- och applikationsfunktioner?
  • Är externa källor fästa och licensierade för avsedd användning?
  • Saknas hemligheter i sparade receptfält och skript?
  • Är installern konfigurerad och testad på engångsdisk om det begärdes?
  • Testar scenarierna de faktiska acceptanskriterierna?
  • Är krav som inte stöds eller gäller vid deployment utpekade?

Se Receptschema för fältreferens och Din första build för build- och nedladdningsflödet.