Skip to Content
Building OsEgyedi szoftver forráskódtárakból

Egyedi szoftver forráskódtárakból

Az OpenFactory receptek a támogatott image buildereken Git-tárgyalhatnak meg egyedi csomag bemenetként. Ez az ellátási lánc szempontjából érzékeny út: a tárolót, a feloldott revíziót, a csomagolási utasításokat, a build függőségeket és az elkészült csomagot át kell nézni.

A támogatás célfüggő. A forráscsomag buildet egyes builderek elutasítják, köztük a jelenlegi Raspberry Pi és Proxmox útvonalakon. A normalizált receptben és a build tervben erősítse meg a rendelkezésre állást, mielőtt azt ígéri, hogy csomag készül.

Recept alakja

Az egyedi csomag bejegyzések az os.custom_packages alatt vannak:

{ "os": { "custom_packages": [ { "name": "my-agent", "git_url": "https://github.com/example/my-agent.git", "branch": "release-1.x" } ] } }

A séma ágnevet fogad el, nem pedig megváltoztathatatlan commit mezőt. Kontrollált kiadásnál rögzítse a build által feloldott pontos commitot, és vegye fel a megőrzött provenance-ba. Önmagában a mozgó ág nem reprodukálható bemenet.

Készítse elő a tárolót

A jelenlegi csomag út a célhoz illő natív csomagolási metaadatokat vár. Gyakori példák a Debian debian/ könyvtár vagy egy RPM spec. A builder pontos viselkedése és a támogatott célverziók változhatnak, ezért ellenőrizzen egy minimális csomagot a telepített környezetben, ne statikus kompatibilitási táblázatra hagyatkozzon.

Debian csomagolásnál legalább ezeket nézze át:

  • debian/control a source/binary identitás és függőségek miatt;
  • debian/changelog a csomag verziója miatt;
  • debian/rules és más futtatható maintainer szkriptek;
  • telepítési manifestek és systemd egységek; és
  • licencelés és csomagolt harmadik fél anyag.

RPM csomagolásnál a spec forrásait, build követelményeit, scriptleteit, fájllistáját és licenc metaadatait.

Soha ne feltételezze, hogy a tároló tulajdonlása biztonságossá teszi a build szkripteket. A csomag build nem megbízható forrást és csomagolási logikát futtat a build infrastruktúra izolációs határán belül.

További csomagvezérlés

Natív csomagok

Az os.packages a kiválasztott disztribúció vagy egy explicit beállított tároló által már szállított csomagokhoz:

{ "os": { "packages": ["curl", "jq"] } }

Csomag felülírások

Az os.package_overrides deklarálhat add, remove vagy replace szándékot:

{ "os": { "package_overrides": [ {"name": "nano", "action": "replace", "replacement": "neovim"}, {"name": "telnet", "action": "remove"} ] } }

A felülírás nem bizonyítja, hogy a függőségfeloldás tiszteletben tartotta. Ellenőrizze a végső csomagkészletet és az absence/presence állításokat.

További tárolók

Az os.extra_repos haladó bemenet. Ne adjon hozzá aláíratlan HTTP tárolót, mint a régebbi példákban. A jóváhagyott tároló integráció HTTPS szállítást, rögzített aláíró kulcsot, aláírás-érvényesítést, a csomagkezelőhöz illő release metaadatokat, valamint dokumentált tulajdonjogot és frissítési szabályzatot igényel. Ha a jelenlegi builder nem tudja ezeket a bizalmi kontrollokat képviselni, ne használja a tárolót.

Elfogadási bizonyíték

Minden egyedi csomagnál őrizze meg:

  • a tároló URL-jét és a feloldott commitot;
  • a forrás és a deklarált licenc áttekintését;
  • a build környezetet és függőség pillanatképet;
  • a build naplókat és az eredményül kapott csomagnév/verzió/architektúrát;
  • a csomag digestet és a tároló aláírás bizonyítékát, ahol érvényes;
  • a végső image készletet a telepített csomaggal;
  • szolgáltatás vagy futtatható smoke teszteket; és
  • az eltávolítás és frissítés viselkedését.

A sikeres forráscsomag fázis nem elég. Az image build később nem használhatja fel a csomagot, a telepített csomag pedig továbbra is használhatatlan lehet.

Hibaelhárítás

  • Csomagolási metaadat elutasítva: ellenőrizze a natív csomagot helyben ugyanazzal a disztribúciós release-sel és architektúrával.
  • Hiányzó build függőség: használjon a célhoz jóváhagyott tárolókból származó függőségeket; maintainer szkriptben ne töltse le csendben tetszőleges binárisokat.
  • Nincs csomag az image-en: hasonlítsa össze az elkészült bináris csomagnévvel a normalizált telepítési kérést és a végső készletet.
  • A verzió nem változott: frissítse a natív verzió metaadatokat, és erősítse meg, hogy az új source commit feloldódott.
  • A szolgáltatás hibázott: nézze meg az unitját, runtime függőségeit, jogosultságait és a vendég naplóit; rebuild előtt adjon viselkedés szintű állítást.