Zum Inhalt springen

Generic

Referenz für Generic in Craftifact: Speichere und rufe opake Dateien über Objektpfade ab und kenne die Grenzen ohne Paketsemantik oder automatische Analyse.

Generic speichert beliebige Bytes unter einem von dir gewählten Pfad und unterstützt derzeit nur Hosted-Repositorys. Es ist ein HTTP-Objekt-Repository, kein Maven-Ersatz, Archivformat, Website-Host oder WebDAV-Server. Eine Dateiendung wie .jar, .deb oder .zip aktiviert weder Paketsemantik noch Analysen.

Konfiguration

generic:
  max_object_size: 10GiB
  max_inflight_size: 40GiB

repositories:
  - name: binaries
    type: generic
    redeploy: false
    generic:
      max_object_size: 2GiB
      max_inflight_size: 4GiB

Die Repository-Grenzen dürfen die globalen Grenzen nicht überschreiten. Tokens benötigen zusätzlich zur passenden Repository-Berechtigung für Lesen, Veröffentlichen oder erneutes Veröffentlichen den Scope generic.

HTTP-Operationen

curl -u 'robot:TOKEN' --upload-file ./release.bin \
  https://repo.example/repository/generic/binaries/releases/release.bin

curl -u 'robot:TOKEN' -o release.bin \
  https://repo.example/repository/generic/binaries/releases/release.bin

curl -u 'robot:TOKEN' --head \
  https://repo.example/repository/generic/binaries/releases/release.bin

PUT legt ein Objekt an und antwortet mit 201. Ein Ersetzen antwortet nur bei aktiviertem Redeploy mit 204; nutze If-Match, wenn du verlorene Aktualisierungen verhindern musst. GET und HEAD liefern starke SHA-256-ETags. Antworten verwenden application/octet-stream und einen Download-Header.

Pfadregeln

  • Die Identität besteht aus dem Repository und dem vollständigen kanonischen Objektpfad. Generic besitzt keine Paket- oder Versionsidentität.
  • Pfade sind UTF-8 und werden auf NFC normalisiert. Leere Segmente, ., .., Backslashes, kodierte Trenner, Steuer- oder unsichtbare Formatzeichen und zu lange Segmente werden abgelehnt.
  • _craftifact_internal ist als erstes Segment reserviert.
  • Eine Datei kann nicht zugleich ein Verzeichnis sein: a kollidiert mit a/b.
  • Es gibt weder Verzeichnislisten noch einen index.html-Fallback.

Retention

Generic unterstützt min_duration_since_published, max_duration_since_published und max_duration_since_download. Ein name-Selektor entspricht dem vollständigen Objektpfad. Versionsselektoren und keep_last-Werte über 0 sind ungültig, weil Generic kein Versionsmodell besitzt.

Bewusste Ausschlüsse

Generic bietet keinen Proxy- oder Group-Modus, keine Byte-Ranges, kein protokollseitiges DELETE, keine Teil-Uploads, keine MIME-Übernahme, kein WebDAV, kein Website-Serving und keine Paketauflösung. Craftifact untersucht oder entpackt Generic-Objekte nicht und erzeugt weder automatisch SBOMs noch Schwachstellen-, Lizenz-, Secret-, Provenance- oder Malware-Analysen. Fehlende Analysen werden niemals als sauberes Ergebnis dargestellt.

Nexus-Raw-Hosted-Repositorys können über die Control Plane importiert werden, wenn die Craftifact-Version des Ziels diese Capability ausweist. Nexus-Raw-Proxy- und -Group-Repositorys können nicht importiert werden.