Forstå opskrifter
En BuildRecipe er den normaliserede specifikation, som OpenFactory sender til image-pipelinen. Chat kan hjælpe med at udarbejde den, men opskriften, kilde-snapshots, genererede filer og testbevis definerer et build.
Mental model
Den kanoniske opskrift har fire hovedlag:
- Identitet og mål: navn, beskrivelse, base image og hardware-intention.
- Operativsystem: features, pakker, services, brugere, sikkerhed, desktop, installer, attachments og startup scripts under
os. - Verifikation: et eller flere scenarier med indbyggede tests og brugerdefinerede assertions.
- Leveringsintention: ønskede publiceringsdestinationer og valgfrie leveringsindstillinger.
{
"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"]
}Brug snake_case. Nye integrationer bør ikke sende legacy-former som baseImage, top-level features eller startupScripts.
Tre kontroller, tre forskellige svar
Skemavalidering
Validering svarer: „Har de genkendte data en acceptabel form?” Den beviser hverken at pakker findes eller at adfærd virker. Nogle ukendte felter ignoreres af hensyn til kompatibilitet, så valideringssucces kan stadig udelade en vigtig anmodning.
Sammenlign altid den returnerede normaliserede opskrift med den oprindelige chat og krav. Manglende desktop, applikation, installer, attachment eller test er en opskriftsfejl, selv om valideringen siger valid.
Buildbevis
Et vellykket build svarer: „Producerede pipelinen et artefakt?” Det beviser ikke, at hver tilsigtet feature kom med i imaget. Gennemgå pakkelager, kilde-proveniens, advarsler og bevis fra build-trin.
Gæstverifikation
Gæsttests besvarer snævre runtime-spørgsmål: om VM’en bootede, en service er aktiv, en port lytter, en fil har forventet indhold, eller en applikation startede. En bestået assertion understøtter kun den adfærd, der faktisk blev observeret.
Sikkerhedsindstillinger er intention
De accepterede værdier for hardening_level er minimal, standard og strict, men etiketterne er ikke portable compliance-profiler. Målgeneratorer kan fortolke dem forskelligt. Hvis du har brug for et benchmark, vælg det præcise relevante benchmark og behold resultater per control; udled ikke CIS-overensstemmelse fra strict.
På samme måde kræver disk_encryption, audit_logging, SELinux, fail2ban, Secure Boot, dm-verity og installer-indstillinger matchende artefakt- og runtime-tests.
Chat og opskriftsejerskab
Når du validerer eller redigerer en chat-forfattet opskrift, forbliver den eksisterende samtale en del af authoring-konteksten. Validering bør finpudse den aktuelle opskrift, ikke stille erstatte den med en generisk standard. Alligevel er den normaliserede opskrift det sidste kontrolpunkt før build.
For hvert væsentligt krav:
- find det tilsvarende normaliserede felt;
- bekræft værdi og målomfang;
- tilføj en assertion, hvor runtime-bevis er muligt; og
- bevar deployment-only arbejde som eksplicit advarsel i stedet for at lade som om det skete under image-build.
Gennemgangstjekliste
- Er base image og arkitektur korrekte?
- Er alle ønskede desktop- og applikationsfeatures til stede?
- Er eksterne kilder fastgjort og licenseret til den tilsigtede brug?
- Mangler hemmeligheder i gemte opskriftsfelter og scripts?
- Er installer konfigureret og testet på engangsdisk, hvis det blev anmodet?
- Tester scenarierne de faktiske acceptkriterier?
- Er krav, der ikke understøttes eller gælder ved deployment, nævnt?
Se Opskriftsskema for feltreference og Dit første build for build- og download-workflow.