Upstreamquellen

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Mithilfe von Upstreamquellen können Sie Pakete aus verschiedenen Quellen bequem in einem einzigen Feed speichern – einschließlich der, die Sie veröffentlichen, sowie diejenigen, die Sie aus anderen Feeds und öffentlichen Registrierungen wie NuGet.org, npmjs.com, Maven Central und PyPI nutzen. Sobald Upstreamquellen aktiviert sind, wird automatisch eine Kopie eines beliebigen Pakets gespeichert, das aus dem Upstream installiert wurde.

Hinweis

Sie müssen ein Mitarbeiter oder höher sein, um Pakete aus Upstreamquellen zu installieren.

Vorteile

Upstreamquellen ermöglichen es Ihnen, alle Abhängigkeiten Ihres Produkts in einem einzigen Feed zu verwalten. Die Veröffentlichung all Ihrer Pakete in einem einzelnen Feed hat einige Vorteile:

  • Einfachheit: Ihre Konfigurationsdatei wie NuGet.config, npmrc oder settings.xml enthält nur einen Feed, sodass sie weniger anfällig für Fehler und Fehler ist.
  • Determinismus: Ihr Feed löst Paketanforderungen in der richtigen Reihenfolge auf, sodass die Neuerstellung Ihres Codes konsistenter ist.
  • Provenienz: Ihr Feed kennt die Herkunft der Pakete, die er aus Upstreamquellen gespeichert hat, sodass Sie überprüfen können, ob Sie das ursprüngliche Paket und nicht ein Kopier- oder böswilliges Paket verwenden.
  • Sicherheit: Für jedes Paket, das aus Upstreamquellen installiert wird, wird eine Kopie in Ihrem Feed gespeichert. Wenn also die Upstreamquelle deaktiviert, entfernt oder gewartet wird, können Sie weiterhin entwickeln und erstellen, da Sie eine Kopie dieses Pakets in Ihrem Feed haben.

Bewährte Methoden : Paketverbraucher

Befolgen Sie die folgenden bewährten Methoden, um die Vorteile von Upstreamquellen als Paketverbraucher optimal nutzen zu können:

Verwenden eines einzelnen Feeds in Ihrer Konfigurationsdatei

Damit Ihr Feed eine deterministische Wiederherstellung ermöglicht, müssen Sie sicherstellen, dass Ihre Konfigurationsdatei wie nuget.config oder NPMRC nur auf einen Feed verweist, wobei die Upstreamquellen aktiviert sind.

Beispiel:

  • nuget.config

    <packageSources>
      <clear />
      <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
    </packageSources>
    

    Hinweis

    NuGet stellt mehrere Konfigurationsdateien zusammen, um den vollständigen Satz zu verwendenden Optionen zu bestimmen. Mithilfe von <clear /> allow können wir alle anderen Paketquellen ignorieren, die in Konfigurationsdateien auf höherer Ebene definiert sind.

  • .npmrc:

    registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
    always-auth=true
    

Ihre Upstreamquellen absichtlich bestellen

Wenn Sie nur öffentliche Registrierungen wie nuget.org oder npmjs.com verwenden, ist die Reihenfolge Ihrer Upstreamquellen irrelevant. Anforderungen an den Feed folgen der Suchreihenfolge.

Wenn Sie mehrere Quellen verwenden, z. B. eine Mischung aus Feeds und öffentlichen Registrierungen, wird jeder Upstream in der Reihenfolge durchsucht, in der er in den Konfigurationseinstellungen des Feeds aufgeführt ist. In diesem Fall wird empfohlen, die öffentlichen Registrierungen an erster Stelle in der Liste der Upstreamquellen zu platzieren.

In seltenen Fällen entscheiden sich einige Organisationen dafür, OSS-Pakete zu ändern, um Sicherheitsprobleme zu beheben, Funktionen hinzuzufügen oder die Anforderungen zu erfüllen, dass das Paket intern von Grund auf neu erstellt wird und nicht direkt aus dem öffentlichen Repository verwendet wird. Wenn Ihre Organisation diesem Muster folgt, platzieren Sie die Upstreamquelle, die diese geänderten OSS-Pakete enthält, vor den öffentlichen Paket-Managern, um sicherzustellen, dass Sie die geänderten Versionen Ihrer Organisation verwenden.

Verwenden der vorgeschlagenen Standardansicht

Wenn Sie einen Remotefeed als Upstreamquelle hinzufügen, müssen Sie die Ansicht des Feeds auswählen. Dadurch können die Upstreamquellen einen Satz verfügbarer Pakete erstellen. Weitere Informationen finden Sie unter vollständige Paketdiagramme .

Bewährte Methoden: Feedbesitzer/Paketverleger

Um sicherzustellen, dass Ihr Feed einfach als Upstreamquelle konfiguriert werden kann, sollten Sie die folgenden bewährten Methoden anwenden:

Verwenden der Standardansicht

Die @local Ansicht ist die Standardansicht für alle neu erstellten Feeds. Es enthält alle Pakete, die in Ihrem Feed veröffentlicht oder aus Upstreamquellen gespeichert wurden.

Wenn Sie Ansichten verwenden möchten, um neue Paketversionen zu veröffentlichen, können Sie Ihr Paket in eine Ansicht höherstufen @release und es Ihren Kunden zur Verfügung stellen.

Erstellen eines Paketdiagramms

Um ein Paketdiagramm zu erstellen, stellen Sie einfach eine Verbindung mit der Standardansicht des Feeds her, und installieren Sie das Paket, das Sie freigeben möchten. Wenn das Paket ordnungsgemäß in der Standardansicht installiert ist, können Benutzer, die es nutzen möchten, das Paketdiagramm auflösen und das gewünschte Paket installieren. Pakete aus Upstreamquellen werden basierend auf der konfigurierten Ansicht für die entsprechende Upstreamquelle angezeigt.

Suchreihenfolge

Für öffentliche Paket-Manager, die mehrere Feeds (NuGet und Maven) unterstützen, ist die Reihenfolge, in der Feeds abgefragt werden, manchmal unklar oder nicht deterministisch. In NuGet werden z. B. parallele Abfragen an alle Feeds in der Konfigurationsdatei durchgeführt, und die Antworten werden first-In, first-out FIFO verarbeitet.

Upstreamquellen verhindern dieses nicht deterministische Verhalten, indem sie den Feed und seine Upstreamquellen in der folgenden Reihenfolge durchsuchen:

  1. Pakete, die an den Feed gepusht werden.

  2. Pakete, die aus einer Upstreamquelle gespeichert werden.

  3. Pakete, die aus Upstreamquellen verfügbar sind: Jedes Upstream wird in der Reihenfolge gesucht, in der er in der Konfiguration des Feeds aufgeführt ist.

Um das Feature "Schnelles Suchen" in vollem Umfang nutzen zu können, empfehlen wir Ihnen, nur einen Feed in Ihre Konfigurationsdatei aufzunehmen.

Hinweis

Die Suche nach Paketen in Upstreams mit dem NuGet-Paket-Explorer wird nicht unterstützt.

Speichern von Paketen aus Upstreamquellen

Wenn Sie Upstreamquellen für Ihren Feed aktivieren, werden Pakete, die aus Upstreamquellen installiert werden, automatisch in Ihrem Feed gespeichert. Diese Pakete können wie folgt npm install express direkt aus dem Upstream installiert werden, oder sie können als Teil einer Abhängigkeitsauflösung installiert werden (die Installation express würde auch Abhängigkeiten wie acceptsspeichern).

Das Speichern von Paketen kann die Downloadleistung verbessern und Netzwerkbandbreite sparen, insbesondere für TFS-Server in internen Netzwerken.

Hinweis

Benutzerdefinierte Upstreamquellen werden nur für npm-Pakete unterstützt.

Überschreiben von Paketen aus Upstreamquellen

Wenn Sie Upstreamquellen aktivieren, müssen Sie beachten, dass die Veröffentlichung einer Paketversion, die bereits im Upstream vorhanden ist, nicht möglich ist. Wenn Sie beispielsweise die NuGet.org Upstream aktivieren, können Sie das Newtonsoft.Json 10.0.3 Paket nicht veröffentlichen, da dieselbe Paketversion bereits in NuGet.org vorhanden ist.

Wenn Sie eine Paketversion veröffentlichen müssen, die bereits in einer Ihrer Upstreamquellen vorhanden ist, müssen Sie diese Upstreamquelle deaktivieren, Ihr Paket veröffentlichen und dann die Upstreamquelle erneut aktivieren.

Hinweis

Paketversionen sind unveränderlich. Gespeicherte Pakete verbleiben im Feed, auch wenn die Upstreamquelle deaktiviert oder entfernt wird.

Integritätsstatus

Wenn ein Feed eine fehlerhafte Upstreamquelle aufweist, können die Metadaten für Pakete mit demselben Protokoll nicht mehr aktualisiert werden. Um den Integritätsstatus Ihrer Upstreamquelle anzuzeigen, wählen Sie das Zahnradsymbol Zahnradsymbol aus, um auf Ihre Feedeinstellungen zuzugreifen, und wählen Sie dann Upstreamquellen aus.

Screenshot: Fehlerstatus der Upstreamquelle

Wenn Fehler auftreten, wird eine Warnmeldung angezeigt. Wenn Sie den Fehlerstatus auswählen, erhalten Sie weitere Details, z. B. den Grund des Fehlers und Anweisungen zum Beheben des Fehlers.

Screenshot: Details zum Synchronisierungsfehler

Hinweis

Bei öffentlichen Registrierungen wie NuGet.org gibt es eine Verzögerung von 3 bis 6 Stunden zwischen dem Push eines Pakets an die öffentliche Registrierung und dem Zeitpunkt, zu dem es zum Download verfügbar ist. Diese Verzögerung hängt vom Auftragszeitpunkt und der Datenweitergabe ab. Wenn es sich bei der Upstreamquelle um einen Azure Artifacts-Feed handelt, beträgt die Latenz in der Regel nicht mehr als einige Minuten.

Offline-Upstreamquellen

Upstreamquellen sind eine hervorragende Möglichkeit, Ihre Verbraucher und Ihre Infrastruktur vor ungeplanten Ausfällen zu schützen. Wenn Sie ein Paket aus einer Upstreamquelle installieren, wird eine Kopie dieses Pakets in Ihrem Feed gespeichert. Wenn die Upstreamquelle nicht vorhanden ist, wartungsbedürftig ist oder nicht verfügbar ist, können Sie trotzdem über Ihren Feed auf die benötigten Pakete zugreifen.

Häufig gestellte Fragen

F: Ich kann mein Paket nicht finden, obwohl ich es in einem der Upstreams meines Feeds sehen kann?

A: Pakete, die zu einem Upstream gehören, sind kurz nach ihrer Veröffentlichung im Downstream verfügbar. Das Paket wird jedoch erst auf der Benutzeroberfläche Ihres Feeds angezeigt, nachdem es erfasst wurde. Die Paketversion muss zum ersten Mal im Downstreamfeed installiert werden.

F: Was sind Feedansichten?

A: Mit Ansichten können Entwickler nur eine Teilmenge von Paketversionen freigeben, die getestet und überprüft wurden, und alle Pakete ausschließen, die sich noch in der Entwicklung befinden und/oder die die Qualitätsleiste nicht erfüllt haben. Weitere Informationen finden Sie unter Was sind Feedansichten .

F: Ich kann den Feed, den ich als Upstreamquelle konfigurieren möchte, nicht finden?

A: Stellen Sie sicher, dass der Besitzer des Feeds eine Ansicht als Upstreamquelle teilt.

F: Kann ein Benutzer mit der Leserrolle Pakete aus einer Upstreamquelle herunterladen?

A: Nein. Ein Benutzer mit der Rolle Leser in einem Azure Artifacts-Feed kann nur Pakete herunterladen, die im Feed gespeichert wurden. Pakete werden im Feed gespeichert, wenn ein Mitarbeiter, ein Mitwirkender oder ein Besitzer diese Pakete aus dem Upstream installiert.

F: Was geschieht, wenn ein Benutzer ein aus einer Upstreamquelle gespeichertes Paket löscht oder die Veröffentlichung aufhebt?

A: Das Paket kann nicht über den Feed heruntergeladen werden, und die Versionsnummer wird dauerhaft reserviert. Das Paket wird auch nicht mehr aus der Upstreamquelle gespeichert. Frühere und höhere Versionen des Pakets sind nicht betroffen.

F: Was geschieht, wenn ein Benutzer ein aus einer Upstreamquelle gespeichertes Paket als veraltet bezeichnet?

A: Es wird eine Warnmeldung zu den Metadaten des Pakets hinzugefügt und immer dann angezeigt, wenn das Paket aus dem Feed angezeigt oder installiert wird.