Retseptide mõistmine
BuildRecipe on normaliseeritud spetsifikatsioon, mille OpenFactory saadab image pipeline’i. Vestlus saab aidata seda koostada, kuid buildi defineerivad retsept, lähtekoodi momentpildid, genereeritud failid ja testitõendid.
Mõttemudel
Kanonilisel retseptil on neli peamist kihti:
- Identiteet ja siht: nimi, kirjeldus, base image ja riistvara kavatsus.
- Operatsioonisüsteem: features, packages, services, users, security, desktop, installer, attachments ja startup scripts all
os. - Kontroll: üks või mitu stsenaariumi sisseehitatud testide ja kohandatud assertionitega.
- Tarne kavatsus: soovitud avaldamise sihtkohad ja valikulised tarne seaded.
{
"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"]
}Kasutage snake_case. Uued integratsioonid ei tohiks saata pärandvorme, näiteks baseImage, top-level features või startupScripts.
Kolm kontrolli, kolm erinevat vastust
Skeemi valideerimine
Valideerimine vastab: „Kas tuvastatud andmetel on aktsepteeritav kuju?“ See ei tõesta, et paketid eksisteerivad või käitumine töötab. Mõned tundmatud väljad ignoreeritakse ühilduvuse huvides, seega võib valideerimise edu siiski olulise taotluse vahele jätta.
Võrrelge alati tagastatud normaliseeritud retsepti algse vestluse ja nõuetega. Puuduv desktop, application, installer, attachment või test on retsepti defekt isegi siis, kui valideerimine näitab valid.
Build tõendid
Edukas build vastab: „Kas pipeline lõi artifact’i?“ See ei tõesta, et iga kavandatud funktsioon jõudis image’i. Vaadake pakettide inventuuri, allika päritolu, hoiatusi ja build etapi tõendeid.
Guest kontroll
Guest testid vastavad kitsastele runtime küsimustele: kas VM käivitus, kas teenus on aktiivne, kas port kuulab, kas failil on oodatud sisu, kas application käivitus. Läbitud assertion toetab ainult käitumist, mida tegelikult jälgiti.
Turvaseaded on kavatsus
Aktsepteeritud hardening_level väärtused on minimal, standard ja strict, kuid need sildid ei ole ülekantavad compliance profiilid. Target generaatorid võivad neid erinevalt tõlgendada. Kui vajate benchmark’i, valige täpne kohaldatav benchmark ja säilitage tulemused control’i kaupa; ära järeldu CIS vastavust strict-ist.
Samuti nõuavad disk_encryption, audit_logging, SELinux, fail2ban, Secure Boot, dm-verity ja installer seaded vastavaid artifact ja runtime teste.
Vestlus ja retsepti omandiõigus
Kui valideerite või muudate vestluses loodud retsepti, jääb olemasolev vestlus authoring konteksti osaks. Valideerimine peaks täpsustama praegust retsepti, mitte vaikselt asendama seda üldise vaikimisi väärtusega. Siiski on normaliseeritud retsept viimane checkpoint enne build’i.
Iga olulise nõude jaoks:
- leidke vastav normaliseeritud väli;
- kinnitage selle väärtus ja siht scope;
- lisage assertion, kus runtime tõend on võimalik; ja
- säilitage deployment-only töö selge hoiatusena, mitte teeseldes, et see toimus image build ajal.
Ülevaate kontrollnimekiri
- Kas base image ja arhitektuur on õiged?
- Kas kõik soovitud desktop ja application funktsioonid on olemas?
- Kas välised allikad on kinnitatud ja litsentseeritud kavandatud kasutuseks?
- Kas saladused puuduvad salvestatud recipe väljadest ja scriptidest?
- Kas installer on seadistatud ja testitud ühekordse kettal, kui seda küsiti?
- Kas stsenaariumid testivad tegelikke acceptance kriteeriume?
- Kas toetamata või deployment ajal kehtivad nõuded on välja toodud?
Vaata Retsepti skeem väljade viite jaoks ja Your First Build build ja allalaadimise workflow jaoks.