Mukautettu ohjelmisto lähdekoodirepositorioista
OpenFactory-reseptit voivat viitata Git-repositorioon custom package -syötteenä tuetuilla image-buildereilla. Tämä on supply chain -herkkä polku: repositorio, ratkaistu revisio, pakkausohjeet, build-riippuvuudet ja tuotettu paketti vaativat kaikki tarkistuksen.
Tuki riippuu kohteesta. Source package -buildit hylätään joillakin buildereilla, mukaan lukien nykyiset Raspberry Pi- ja Proxmox-polut. Varmista saatavuus normalisoidusta reseptistä ja build-suunnitelmasta ennen kuin lupaat paketin tuotannon.
Reseptin muoto
Custom package -merkinnät ovat polussa os.custom_packages:
{
"os": {
"custom_packages": [
{
"name": "my-agent",
"git_url": "https://github.com/example/my-agent.git",
"branch": "release-1.x"
}
]
}
}Skeema hyväksyy haaran nimen, ei muuttumatonta commit-kenttää. Kontrolloidussa julkaisussa kirjaa buildin ratkaisema tarkka commit ja sisällytä se säilytettyyn provenanceen. Pelkkä liikkuva haara ei ole toistettava syöte.
Valmistele repositorio
Nykyinen package-polku odottaa kohteeseen sopivia natiiveja pakkausmetatietoja. Tyypillisiä esimerkkejä ovat Debian-hakemisto debian/ tai RPM-spec. Tarkka builder-käyttäytyminen ja tuetut kohdeversiot voivat muuttua, joten validoi minimaalinen paketti käyttöönotetussa ympäristössä äläkä luota staattiseen yhteensopivuustaulukkoon.
Debian-pakkauksessa tarkista vähintään:
debian/controllähde-/binääri-identiteetille ja riippuvuuksille;debian/changelogpaketin versiolle;debian/rulesja muut suoritettavat maintainer-skriptit;- asennusmanifestit ja systemd-yksiköt; sekä
- lisensointi ja mukana oleva kolmannen osapuolen materiaali.
RPM-pakkauksessa tarkista specin lähteet, build-vaatimukset, scriptletit, tiedostolista ja lisenssimetatiedot.
Älä koskaan oleta, että repositorion omistus tekee build-skripteistä turvallisia. Package-buildit suorittavat epäluotettavaa lähde- ja pakkauslogiikkaa build-infrastruktuurin eristysrajalla.
Muut package-asetukset
Native packages
Käytä os.packages paketeille, jotka valittu jakelu tai eksplisiittisesti konfiguroitu repositorio jo tarjoaa:
{
"os": {
"packages": ["curl", "jq"]
}
}Package overrides
os.package_overrides voi ilmoittaa intentin add, remove tai replace:
{
"os": {
"package_overrides": [
{"name": "nano", "action": "replace", "replacement": "neovim"},
{"name": "telnet", "action": "remove"}
]
}
}Override ei todista, että dependency resolution noudatti sitä. Varmista lopullinen paketti-inventaario ja absence/presence-assertiot.
Lisärepositoriot
os.extra_repos on edistynyt syöte. Älä lisää allekirjoittamatonta HTTP-repositoriota kuten vanhemmissa esimerkeissä. Hyväksytty repository-integraatio vaatii HTTPS-kuljetuksen, kiinnitetyn signing keyn, allekirjoitusten valvonnan, package manageriin sopivat release-metatiedot sekä dokumentoidun omistajuuden ja päivityskäytännön. Jos nykyinen builder ei voi esittää näitä trust control -asetuksia, älä käytä repositoriota.
Hyväksyntätodisteet
Jokaisesta custom packagesta säilytä:
- repositorion URL ja ratkaistu commit;
- lähteen ja ilmoitetun lisenssin tarkistus;
- build-ympäristö ja dependency-snapshot;
- build-lokit sekä paketin nimi/versio/arkkitehtuuri;
- package digest ja repository-signature -todiste tarvittaessa;
- lopullinen image-inventaario, jossa paketti on asennettuna;
- palvelu- tai executable-smoke-testit; sekä
- poisto- ja päivityskäyttäytyminen.
Onnistunut source package -vaihe ei riitä. Image-build voi myöhemmin epäonnistua paketin kulutuksessa, ja asennettu paketti voi silti olla käyttökelvoton.
Vianetsintä
- Pakkausmetatiedot hylätty: validoi natiivi paketti paikallisesti samalla jakeluversiolla ja arkkitehtuurilla.
- Build-riippuvuus puuttuu: käytä hyväksytyistä repositorioista saatavia riippuvuuksia kyseiseen kohteeseen; älä hae satunnaisia binäärejä hiljaa maintainer-skriptissä.
- Paketti puuttuu imagesta: vertaa tuotettua binääripaketin nimeä normalisoituun asennuspyyntöön ja lopulliseen inventaarioon.
- Versio ei muuttunut: päivitä natiivit versiometatiedot ja varmista, että uusi source-commit ratkaistiin.
- Palvelu epäonnistui: tarkista yksikkö, runtime-riippuvuudet, oikeudet ja vieraslogit; lisää käyttäytymisassertio ennen rebuildia.