Receptų supratimas
BuildRecipe yra normalizuota specifikacija, kurią OpenFactory siunčia į image pipeline. Pokalbis gali padėti ją sudaryti, tačiau buildą apibrėžia receptas, šaltinių momentinės kopijos, sugeneruoti failai ir testų įrodymai.
Mentalinis modelis
Kanoninis receptas turi keturis pagrindinius sluoksnius:
- Tapatybė ir tikslas: pavadinimas, aprašas, base image ir įrangos ketinimas.
- Operacinė sistema: features, packages, services, users, security, desktop, installer, attachments ir startup scripts po
os. - Patikrinimas: vienas ar daugiau scenarijų su integruotais testais ir pasirinktiniais assertions.
- Pristatymo ketinimas: pageidaujamos publikavimo paskirtys ir neprivalomi pristatymo nustatymai.
{
"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"]
}Naudokite snake_case. Naujos integracijos neturėtų siųsti senų formų, pvz. baseImage, top-level features ar startupScripts.
Trys patikros, trys skirtingi atsakymai
Schemos validavimas
Validavimas atsako: „Ar atpažinti duomenys turi priimtiną formą?“ Jis neįrodo, kad paketai egzistuoja ar elgsena veikia. Kai kurie nežinomi laukai ignoruojami dėl suderinamumo, todėl sėkmingas validavimas vis tiek gali praleisti svarbų prašymą.
Visada lyginkite grąžintą normalizuotą receptą su pradiniu pokalbiu ir reikalavimais. Trūkstamas desktop, application, installer, attachment ar testas yra recepto defektas, net jei validavimas rodo valid.
Build įrodymai
Sėkmingas build atsako: „Ar pipeline sukūrė artifact?“ Jis neįrodo, kad kiekviena numatyta funkcija pateko į image. Peržiūrėkite paketų inventorių, šaltinio kilmę, įspėjimus ir build etapo įrodymus.
Guest patikrinimas
Guest testai atsako siaurus runtime klausimus: ar VM paleido, ar tarnyba aktyvi, ar portas klauso, ar failas turi tikėtiną turinį, ar paleista application. Praėjęs assertion palaiko tik elgseną, kurią tikrai stebėjo.
Saugumo nustatymai yra ketinimas
Priimamos hardening_level reikšmės yra minimal, standard ir strict, tačiau šios etiketės nėra perkeliami compliance profiliai. Target generatoriai gali jas interpretuoti skirtingai. Jei reikia benchmark, pasirinkite tikslų taikomą benchmark ir saugokite rezultatus pagal control; neidentifikuokite CIS atitikties iš strict.
Taip pat disk_encryption, audit_logging, SELinux, fail2ban, Secure Boot, dm-verity ir installer nustatymai reikalauja atitinkamų artifact ir runtime testų.
Pokalbis ir recepto nuosavybė
Kai validuojate ar redaguojate pokalbyje sukurtą receptą, esamas pokalbis lieka authoring konteksto dalimi. Validavimas turėtų patikslinti dabartinį receptą, o ne tyčia pakeisti jį bendru numatytuoju. Vis dėlto normalizuotas receptas yra paskutinis checkpoint prieš build.
Kiekvienam esminiam reikalavimui:
- raskite atitinkamą normalizuotą lauką;
- patvirtinkite jo reikšmę ir tikslinį scope;
- pridėkite assertion, kur galimas runtime įrodymas; ir
- deployment-only darbą išsaugokite kaip aiškų įspėjimą, o ne apsimeskite, kad jis vyko image build metu.
Peržiūros kontrolinis sąrašas
- Ar base image ir architektūra teisingi?
- Ar visos pageidaujamos desktop ir application funkcijos yra?
- Ar išoriniai šaltiniai yra prisegti ir licencijuoti numatytam naudojimui?
- Ar slaptos informacijos nėra išsaugotuose recipe laukuose ir scriptuose?
- Ar installer sukonfigūruotas ir išbandytas ant vienkartinio disko, jei prašyta?
- Ar scenarijai tikrina tikrus acceptance kriterijus?
- Ar nepalaikomi ar deployment laiko reikalavimai aiškiai nurodyti?
Žr. Recepto schema laukų nuorodai ir Your First Build build ir atsisiuntimo workflow.