Prilagođeni softver iz repozitorija izvornog koda
OpenFactory recepti na podržanim graditeljima slika mogu navesti Git repozitorij kao ulaz prilagođenog paketa. To je put osjetljiv na lanac opskrbe: repozitorij, razriješenu reviziju, upute za pakiranje, ovisnosti gradnje i nastali paket treba pregledati.
Podrška ovisi o cilju. Gradnje izvornih paketa neki graditelji odbijaju, uključujući trenutačne putove Raspberry Pi i Proxmox. Dostupnost potvrdite u normaliziranom receptu i planu gradnje prije nego što obećate da će paket nastati.
Oblik recepta
Unosi prilagođenih paketa nalaze se pod os.custom_packages:
{
"os": {
"custom_packages": [
{
"name": "my-agent",
"git_url": "https://github.com/example/my-agent.git",
"branch": "release-1.x"
}
]
}
}Shema prihvaća naziv grane, a ne nepromjenjivo polje commit. Za kontrolirano izdanje zabilježite točan commit koji gradnja razriješi i uključite ga u zadržanu provenance. Samo grana koja se pomiče nije reproduktibilan ulaz.
Pripremite repozitorij
Trenutačni put paketa očekuje izvorne metapodatke pakiranja prikladne cilju. Uobičajeni primjeri su Debian direktorij debian/ ili RPM spec. Točno ponašanje graditelja i podržane verzije cilja mogu se promijeniti, pa provjerite minimalni paket u implementiranom okruženju umjesto oslanjanja na statičnu tablicu kompatibilnosti.
Za Debian pakiranje pregledajte barem:
debian/controlradi identiteta source/binary i ovisnosti;debian/changelogradi verzije paketa;debian/rulesi druge izvršive maintainer skripte;- instalacijske manifeste i systemd jedinice; i
- licenciranje i uključeni materijal trećih strana.
Za RPM pakiranje pregledajte izvore u spec, zahtjeve gradnje, scriptlete, popis datoteka i metapodatke licence.
Nikada ne pretpostavljajte da vlasništvo repozitorija čini njegove skripte gradnje sigurnima. Gradnje paketa izvršavaju nepouzdani izvor i logiku pakiranja unutar granice izolacije infrastrukture gradnje.
Ostale kontrole paketa
Izvorni paketi
Koristite os.packages za pakete koje već isporučuje odabrana distribucija ili eksplicitno konfigurirani repozitorij:
{
"os": {
"packages": ["curl", "jq"]
}
}Zamjene paketa
os.package_overrides može deklarirati namjeru add, remove ili replace:
{
"os": {
"package_overrides": [
{"name": "nano", "action": "replace", "replacement": "neovim"},
{"name": "telnet", "action": "remove"}
]
}
}Zamjena nije dokaz da je razrješavanje ovisnosti poštovalo namjeru. Provjerite konačni inventar paketa i tvrdnje absence/presence.
Dodatni repozitoriji
os.extra_repos je napredni ulaz. Ne dodajte nepotpisani HTTP repozitorij kao u starijim primjerima. Odobrena integracija repozitorija treba HTTPS prijenos, prikvačeni ključ za potpis, provođenje potpisa, metapodatke release prikladne upravitelju paketa te dokumentirano vlasništvo i politiku ažuriranja. Ako ih trenutačni graditelj ne može predstaviti, repozitorij ne koristite.
Dokazi za prihvaćanje
Za svaki prilagođeni paket zadržite:
- URL repozitorija i razriješeni commit;
- pregled izvora i deklarirane licence;
- okruženje gradnje i snimku ovisnosti;
- zapise gradnje te nastali naziv/verziju/arhitekturu paketa;
- digest paketa i dokaz potpisa repozitorija gdje je primjenjivo;
- konačni inventar slike s instaliranim paketom;
- smoke testove usluge ili izvršne datoteke; i
- ponašanje pri uklanjanju i nadogradnji.
Uspješna faza izvornog paketa nije dovoljna. Gradnja slike kasnije može ne iskoristiti paket, a instalirani paket i dalje može biti neupotrebljiv.
Rješavanje problema
- Metapodaci pakiranja odbijeni: provjerite izvorni paket lokalno s istim release distribucije i arhitekturom.
- Nedostaje ovisnost gradnje: koristite ovisnosti iz odobrenih repozitorija za taj cilj; u maintainer skripti ne preuzimajte po tišini proizvoljne binarne datoteke.
- Paket nije na slici: usporedite nastali naziv binarnog paketa s normaliziranim zahtjevom instalacije i konačnim inventarom.
- Verzija se nije promijenila: ažurirajte izvorne metapodatke verzije i potvrdite da je razriješen novi source commit.
- Usluga nije uspjela: pregledajte njezinu unit, runtime ovisnosti, dozvole i zapise gosta; prije ponovne gradnje dodajte tvrdnju na razini ponašanja.