Kai Ole Hartwig
pinup · Dokumentation

Manager, Datenquellen, Versionierungen

Drei Register, adressiert mit den Namen, die eine Konfiguration benutzt. Ein Manager liest eine Datei und liefert Abhängigkeiten mit Byte-Ranges. Eine Datenquelle beantwortet die Releases einer Abhängigkeit. Eine Versionierung ordnet sie und schreibt den Wert um.

  • enabledManagers ist eine geschlossene Liste: ein Manager, der dort nicht steht, läuft nicht
  • custom.regex muss genannt sein, damit die Custom Manager laufen

Manager

NameLiestHinweise
dockerfileDockerfile, Containerfile, *.DockerfileFROM, COPY --from, # syntax=; ARG-interpolierte Images; Digest-Pins bleiben oder kommen mit pinDigests
gitlabci.gitlab-ci.ymlimage: und services: in jeder Tiefe, als String und als Objekt; include: component:-Pins (gitlab-tags auf dem Projekt der Komponente); $VAR-Tags werden als unauflösbar gemeldet, nicht geraten
kustomizekustomization.yamlimages: mit newTag/digest, entfernte resources und components mit ?ref=, helmCharts:
npmpackage.json, Lock-DateienDependencies jeder Art, engines.node (node-version), packageManager, pnpm.overrides; Workspaces lesen und aktualisieren das Root-Lock
composercomposer.json, composer.lockrequire, require-dev, config.platform.php, Repositories vom Typ composer in Dateireihenfolge, dann Packagist; die gelockte Version ist der Ausgangspunkt eines Updates
gomodgo.mod, go.sumdie go-Direktive (golang-version), Requires, // indirect bei einem Security-Fix; go mod tidy neben jedem Modul mit go.sum
terraform*.tf, .terraform.lock.hclrequired_providers, Registry-Module; ein Provider-Bump bewegt Version und Hashes im Lock mit
terraform-version.terraform-versiontfenvs Datei, der Wert wie geschrieben
custom.regexwas managerFilePatterns nennensiehe Konfiguration

Datenquellen

NameFragtHinweise
dockerdie /v2/-API der RegistryTags, der Digest eines Tags beim Pinnen; Bearer-Tokens per Realm; die eigene Registry des Estates mit dem Plattform-Token, andere anonym
gitlab-tags, gitlab-releases, gitlab-packagesdie REST-API einer GitLab-Instanzdie Instanz aus der Umgebung, sofern registryUrls keine andere nennt; paginiert
github-releases, github-tagsapi.github.commit GITHUB_COM_TOKEN, wenn gesetzt; sonst das 60-pro-Stunde-Limit
npmdas Paketdokument der RegistryregistryUrls; deprecated als String oder Boolean
packagistdas Composer-Repository-ProtokollPackagist und jede Registry, die es spricht, GitLabs Gruppen-Registry mit ihrem Provider-Format eingeschlossen; Repositories in Dateireihenfolge, bis eines das Paket hat
pypidie JSON-APIunter dem PEP-503-Namen; ein in jeder Datei gezogenes Release ist deprecated
node-versionnodejs.org/dist/index.jsoneinmal pro Prozess gelesen
golang-versiongo.devdie Go-Toolchain
goder Module-Proxy, oder die Instanz für Module dortein go/vN-Tag in einem Unterverzeichnis eines Projekts wird über dessen Tags aufgelöst
helmdie index.yaml eines Chart-Repositoriesbraucht registryUrls; der Index wird einmal pro Repository geholt
terraform-provider, terraform-moduledas Registry-Protokoll (Discovery zuerst)OpenTofus oder HashiCorps Registry; Provider-Hashes für das Lock
git-tags, git-refsgit ls-remotejedes Repository, das git erreicht; git-refs für einen per Commit gepinnten Branch
custom.*was customDatasources deklariertdefaultRegistryUrlTemplate, format, transformTemplates; apk-Indexe (custom.wolfi und die aus PINUP_APK_VIEWS) werden nativ aus dem APKINDEX bedient

Der Ausfall einer Datenquelle ist eine Warnung im Plan gegen diese Abhängigkeit, nie ein gescheiterter Lauf für das Repository.

Versionierungen

NameOrdnetHinweise
semverstriktes Semverein führendes v bleibt, wie geschrieben
semver-partialSemver mit Teilversionen1 und 1.2 sind Ranges
semver-coercedalles, was wie eine Version beginnt
looseführende numerische Komponentenkein Prerelease-Begriff: 1.0.0-alpha ist hier stabil, und Satisfies ist Gleichheit
dockerImage-TagsVersion und Kompatibilitätssegment (22-alpine3.21); ein anderes Suffix oder eine andere Komponentenzahl ist ein anderes Image, kein Update
apkWolfi-/Alpine-Paketversionen-rN-Revisionen, Epochen
composerComposer-Constraints^, ~, *, Stability-Flags, dev--Branches
npmnpm-Ranges^, ~, x, ||, Bindestrich-Ranges
nodeNode.jsSemver, engines-Ranges als npm-Ranges
goGo-Modulev-Präfix, Pseudo-Versionen, +incompatible
go-mod-directivedie go-Direktive1.27 lässt 1.27.x zu
hashicorpTerraform-Constraints~>, >=, ,
regexregex:<muster>benannte Gruppen major, minor, patch, prerelease, compatibility
pep440Python-VersionenEpoche, a/b/rc, .post, .dev, local; Specifier-Sets

Eine Datenquelle nennt ihre Standard-Versionierung; das versioning einer Regel oder versioning= einer Annotation überschreibt sie.

Weiter

Zurück zu pinup

Die Übersicht: Problem, Fit-Check, Quickstart, alle Kapitel.

pinup →
Zurück zu pinup

Der Plan

Das JSON, das jeder Lauf schreibt, bevor er etwas anderes schreibt.

Lesen →
Der Plan