Kohandatud tarkvara lähtekoodi hoidlatest
OpenFactory retseptid võivad toetatud pildi ehitajatel viidata Git hoidlale kohandatud paketi sisendina. See on tarneahelatundlik tee: hoidlat, lahendatud revisiooni, pakendamise juhiseid, build sõltuvusi ja valminud paketti tuleb üle vaadata.
Tugi sõltub sihtmärgist. Mõned ehitajad lükkavad tagasi lähtepaketi buildid, sealhulgas praegused Raspberry Pi ja Proxmox teed. Enne paketi valmimise lubamist kinnitage võimalus normaliseeritud retseptis ja build plaanis.
Retsepti kuju
Kohandatud paketi kirjed on os.custom_packages all:
{
"os": {
"custom_packages": [
{
"name": "my-agent",
"git_url": "https://github.com/example/my-agent.git",
"branch": "release-1.x"
}
]
}
}Skeem aktsepteerib haru nime, mitte muutumatut commit välja. Kontrollitud release jaoks salvestage buildi lahendatud täpne commit ja tehke see commit säilitatud päritolu osaks. Ainult liikuv haru ei ole korduvkasutatav sisend.
Valmistage hoidla ette
Praegune paketi tee eeldab sihtmärgile sobivaid kohalikke pakendamise metandmeid. Levinud näited on Debian debian/ kataloog või RPM spec. Täpne ehitaja käitumine ja toetatud sihtmärgi versioonid võivad muutuda, seega valideerige minimaalne pakett juurutatud keskkonnas, mitte staatilise ühilduvustabeli peale.
Debian pakendamise puhul vaadake vähemalt üle:
debian/controlallika/binaari identiteedi ja sõltuvuste jaoks;debian/changelogpaketi versiooni jaoks;debian/rulesja teised käivitatavad maintainer skriptid;- installimise manifestid ja systemd üksused; ja
- litsentsimine ja kaasatud kolmanda osapoole materjal.
RPM pakendamise puhul vaadake üle spec allikad, build nõuded, scriptlets, failide loend ja litsentsi metandmed.
Ärge eeldage, et hoidla omamine muudab build skriptid turvaliseks. Paketi buildid käivitavad usaldamatu allika ja pakendamise loogika build infrastruktuuri isolatsiooni piires.
Muud paketihaldusvõimalused
Kohalikud paketid
Kasutage os.packages pakettide jaoks, mida juba pakub valitud distributsioon või selgelt seadistatud hoidla:
{
"os": {
"packages": ["curl", "jq"]
}
}Paketi ülekirjutused
os.package_overrides võib deklareerida add, remove või replace:
{
"os": {
"package_overrides": [
{"name": "nano", "action": "replace", "replacement": "neovim"},
{"name": "telnet", "action": "remove"}
]
}
}Override ei tõesta, et sõltuvuste lahendus seda järgis. Kontrollige lõplikku paketi inventuuri ja absence/presence assertions.
Lisahoidlad
os.extra_repos on edasijõudnud sisend. Ärge lisage allkirjastamata HTTP hoidlat nagu vanemates näidetes. Heakskiidetud hoidla integratsioon vajab HTTPS transporti, kinnitatud allkirjavõtit, allkirjade jõustamist, release metandmeid, mis sobivad package managerile, ning dokumenteeritud omandi ja uuenduspoliitikat. Kui praegune ehitaja neid usalduskontrolle esitada ei saa, hoidlat ära kasutage.
Vastuvõtu tõendid
Iga kohandatud paketi kohta säilitage:
- hoidla URL ja lahendatud commit;
- allika ja deklareeritud litsentsi ülevaatus;
- build keskkonna ja sõltuvuste snapshot;
- build logid ning valminud paketi nimi/versioon/arhitektuur;
- paketi digest ja hoidla allkirja tõendid, kus kohaldatav;
- lõplik pildi inventuur, mis näitab paketi paigaldatud;
- service või käivitatava faili smoke testid; ja
- eemaldamise ja uuendamise käitumine.
Edukas lähtepaketi etapp ei piisa. Pildi build võib paketti hiljem tarbimata jätta, ja paigaldatud pakett võib siiski kasutamatu olla.
Tõrkeotsing
- Pakendamise metandmed tagasi lükatud: valideerige kohalik pakett kohapeal sama distributsiooni release ja arhitektuuriga.
- Build sõltuvus puudub: kasutage selle sihtmärgi jaoks heakskiidetud hoidlatest saadavaid sõltuvusi; maintainer skriptis ärge vaikselt laadige alla suvalisi binaare.
- Pakett puudub pildist: võrrelge valminud binaarpaketi nime normaliseeritud paigaldusnõude ja lõpliku inventuuriga.
- Versioon ei muutunud: uuendage kohalikke versiooni metandmeid ja kinnitage, et lahendati uus allika commit.
- Service ebaõnnestus: vaadake üle selle unit, runtime sõltuvused, õigused ja guest logid; enne rebuild lisage käitumistaseme assertion.