Tilpasset programvare fra kildekoderepositorier
OpenFactory-oppskrifter kan referere til et Git-repositorium som custom package-input på støttede image-buildere. Dette er en supply-chain-følsom sti: repositoriet, løst revisjon, packaging-instruksjoner, build-avhengigheter og den produserte pakken krever alle gjennomgang.
Støtte er målspesifikk. Source package-bygg avvises for noen buildere, inkludert nåværende Raspberry Pi- og Proxmox-stier. Bekreft tilgjengelighet i den normaliserte oppskriften og byggeplanen før du lover at en pakke blir produsert.
Oppskriftsform
Custom package-poster ligger under os.custom_packages:
{
"os": {
"custom_packages": [
{
"name": "my-agent",
"git_url": "https://github.com/example/my-agent.git",
"branch": "release-1.x"
}
]
}
}Skjemaet aksepterer et branch-navn, ikke et uforanderlig commit-felt. For en kontrollert release: registrer nøyaktig commit som bygget løser, og gjør den commiten til en del av bevart provenance. En bevegelig branch alene er ikke reproducerbar input.
Forbered repositoriet
Den nåværende package-stien forventer native packaging-metadata som passer til målet. Vanlige eksempler er en Debian-mappe debian/ eller en RPM-spec. Nøyaktig builder-atferd og støttede målversjoner kan endre seg, så valider en minimal pakke i det utrullede miljøet i stedet for å stole på en statisk kompatibilitetstabell.
For Debian-packaging, gå gjennom minst:
debian/controlfor source/binary-identitet og avhengigheter;debian/changelogfor pakkeversjonen;debian/rulesog andre kjørbare maintainer-skript;- installasjonsmanifester og systemd-enheter; og
- lisensiering og inkludert materiale fra tredjepart.
For RPM-packaging, gå gjennom spec-ens kilder, build-krav, scriptlets, filliste og lisensmetadata.
Anta aldri at eierskap til repositoriet gjør byggeskriptene trygge. Package-bygg kjører ikke-betrodd kilde- og packaging-logikk innenfor isolasjonsgrensen til build-infrastrukturen.
Annen package-styring
Native packages
Bruk os.packages for pakker som allerede leveres av valgt distribusjon eller et eksplisitt konfigurert repositorium:
{
"os": {
"packages": ["curl", "jq"]
}
}Package overrides
os.package_overrides kan deklarere intensjon add, remove eller replace:
{
"os": {
"package_overrides": [
{"name": "nano", "action": "replace", "replacement": "neovim"},
{"name": "telnet", "action": "remove"}
]
}
}En override beviser ikke at dependency resolution fulgte den. Verifiser endelig pakkeinventar og absence/presence-assertions.
Ekstra repositorier
os.extra_repos er et avansert input. Ikke legg til et usignert HTTP-repositorium som i eldre eksempler. En godkjent repository-integrasjon krever HTTPS-transport, en festet signing key, håndheving av signaturer, release-metadata passende for package manager, samt dokumentert eierskap og oppdateringspolicy. Hvis de trust controls ikke kan representeres av nåværende builder, ikke bruk repositoriet.
Akseptbevis
For hver custom package, behold:
- repository-URL og løst commit;
- gjennomgang av kilde og erklært lisens;
- build-miljø og dependency-snapshot;
- build-logger og resulterende pakkenavn/versjon/arkitektur;
- package digest og repository-signature-bevis der det gjelder;
- endelig image-inventar som viser pakken installert;
- service- eller executable-smoke-tester; og
- oppførsel ved fjerning og oppgradering.
En vellykket source package-fase er ikke nok. Image-bygget kan senere mislykkes med å konsumere pakken, og en installert pakke kan fortsatt være ubrukelig.
Feilsøking
- Packaging-metadata avvist: valider den native pakken lokalt med samme distribusjonsrelease og arkitektur.
- Build-avhengighet mangler: bruk avhengigheter fra godkjente repositorier for det målet; ikke hent vilkårlige binærfiler stille i et maintainer-skript.
- Pakke mangler i imaget: sammenlign det produserte binære pakkenavnet med normalisert installasjonsforespørsel og endelig inventar.
- Versjon endret seg ikke: oppdater native versjonsmetadata og bekreft at den nye source-committen ble løst.
- Tjeneste feilet: inspiser enheten, runtime-avhengigheter, tillatelser og gjestelogger; legg til en atferdsassertion før rebuild.