Upstreamquellen

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Upstreamquellen ermöglichen es Ihnen, einen einzelnen Feed zum Speichern von Paketen aus verschiedenen Quellen zu verwenden: die, die Sie veröffentlichen und die sie aus Feeds und öffentlichen Registrierungen wie NuGet.org, npmjs.com, Maven Central und PyPI verwenden. Nachdem Sie eine Upstreamquelle aktiviert haben, kann jeder Benutzer, der mit Ihrem Feed verbunden ist, ein Paket aus dem Upstream installieren und eine Kopie in Ihrem Feed gespeichert werden.

Hinweis

Benutzerdefinierte Upstreamquellen werden derzeit nur für npm unterstützt.

Vorteile

Upstreamquellen ermöglichen es Ihnen, alle Abhängigkeiten Ihres Produkts in einem einzelnen Feed zu verwalten. Das Veröffentlichen aller 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 Reihenfolge ab, sodass das Neu erstellen Ihres Codes konsistenter ist.
  • Provenance: Ihr Feed kennt die Provenanz der Pakete, die sie aus vorgelagerten Quellen gespeichert hat, sodass Sie überprüfen können, dass Sie das ursprüngliche Paket verwenden und keine Kopie oder böswillige Pakete verwenden.
  • Ruhen Sie: Eine Kopie wird in Ihrem Feed für jedes Paket gespeichert, das aus vorgelagerten Quellen installiert ist. Wenn die Upstreamquelle deaktiviert, entfernt oder wartungsfähig ist, können Sie weiterhin entwickeln und erstellen, da Sie eine Kopie dieses Pakets in Ihrem Feed haben.

Bewährte Methoden – Paketkonsumenten

Führen Sie die folgenden bewährten Methoden aus, um die Vorteile von Upstreamquellen als Paketverbraucher nutzen zu können:

Verwenden eines einzelnen Feeds in Ihrer Konfigurationsdatei

Damit Ihr Feed deterministische Wiederherstellung bereitstellt, ist es wichtig, sicherzustellen, dass Ihre Konfigurationsdatei wie nuget.config oder .npmrc nur einen Feed mit aktivierten Upstreamquellen verweist.

Beispiel:

  • nuget.config

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

Hinweis

Das <clear /> Tag ist erforderlich, da NuGet mehrere Konfigurationsdateien erstellt, um den vollständigen Satz von zu verwendenden Optionen zu bestimmen. <clear />teilt NuGet mit, alle anderen <packageSources> in konfigurationsdateien höherer Ebene definierten Elemente zu ignorieren.

  • .npmrc:

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

Bestellen Sie Ihre vorgeschalteten Quellen absichtlich

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

Wenn Sie mehrere Quellen verwenden, z. B. eine Mischung aus Feeds und öffentlichen Registrierungen, wird jedes Upstream in der Reihenfolge gesucht, in der er in den Konfigurationseinstellungen des Feeds aufgeführt ist. In diesem Fall empfehlen wir, die öffentlichen Registrierungen zuerst in der Liste der vorgelagerten Quellen zu platzieren.

In seltenen Fällen entscheiden sich einige Organisationen, OSS-Pakete zu ändern, um Sicherheitsprobleme zu beheben, Funktionen hinzuzufügen oder Anforderungen zu erfüllen, die von Grund auf neu erstellt werden, anstatt direkt aus dem öffentlichen Repository zu verwenden. Wenn Ihre Organisation diesem Muster folgt, platzieren Sie die Upstreamquelle, die diese geänderten OSS-Pakete enthält, bevor die öffentlichen Paketmanager sicherstellen, 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 vorgelagerten Quellen eine Reihe verfügbarer Pakete erstellen. Weitere Details finden Sie in vollständigen Paketdiagrammen .

Bewährte Methoden: Feedbesitzer/Paketanbieter

Hinweis

Upstreamquellen werden in öffentlichen Feeds nicht unterstützt.

Um sicherzustellen, dass Ihr Feed einfach als Upstreamquelle konfiguriert ist, 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 upstream-Quellen gespeichert wurden.

Wenn Sie Ansichten verwenden möchten, um neue Paketversionen zu veröffentlichen, können Sie Ihr Paket auf eine Ansicht @release wie z. B. bewerben und ihren Verbrauchern zur Verfügung stellen.

Erstellen eines Paketdiagramms

Wenn eine Feedabfrage ihre Upstreamquelle für ein Paket abfragt, geben Azure Artifacts die Pakete in der Ansicht zurück, die für diese bestimmte Upstreamquelle konfiguriert wurde. 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 in der Standardansicht ordnungsgemäß installiert ist, können Benutzer, die es nutzen möchten, das Paketdiagramm auflösen und das gewünschte Paket installieren.

Suchreihenfolge

Für öffentliche Paketmanager, die mehrere Feeds unterstützen (NuGet und Maven), 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 vorgenommen, und die Antworten werden first-In, First-Out FIFO verarbeitet.

Vorgelagerte Quellen verhindern dieses nicht deterministische Verhalten, indem sie den Feed und seine vorgelagerten Quellen mithilfe der folgenden Reihenfolge durchsuchen:

  1. Pakete, die an den Feed verschoben wurden.

  2. Pakete, die aus einer upstream-Quelle gespeichert wurden.

  3. Pakete, die aus vorgelagerten Quellen verfügbar sind: Jede upstream wird in der Reihenfolge gesucht, in der sie in der Konfiguration des Feeds aufgeführt ist.

Um die Schnelle Nachschlagefunktion vollständig nutzen zu können, empfehlen wir Ihnen, nur einen Feed in Ihre Config-Datei einzuschließen.

Speichern von Paketen aus vorgelagerten Quellen

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

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

Außerkraftsetzung von Paketen aus vorgelagerten Quellen

Wenn Sie upstream-Quellen aktivieren, müssen Sie wissen, 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 diese Paketversion bereits 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

Sie können nur eine Paketversion veröffentlichen, die zuvor nicht vor dem Upstream gespeichert wurde. Gespeicherte Pakete bleiben auch dann im Feed, wenn die Upstreamquelle deaktiviert oder entfernt wird.

Integritätsstatus

Wenn ein Feed über eine fehlgeschlagene Upstreamquelle verfügt, können die Metadaten nicht mehr für Pakete desselben Protokolls aktualisiert werden. Wählen Sie zum Anzeigen des Integritätsstatus Ihrer vorgelagerten Quelle das Zahnradsymbol gear icon aus, um auf Ihre Feedeinstellungen zuzugreifen, und wählen Sie dann upstream-Quellen aus.

Wenn Fehler auftreten, wird eine Warnung angezeigt. Auf der Seite "Einstellungen" wird auch angegeben, welche der vorgelagerten Quellen fehlschlägt. Das Auswählen des Fehlers im Upstream enthält weitere Details, z. B. den Grund des Fehlers und Anweisungen zur Lösung.

Screenshot showing the upstream source's health status

Hinweis

Bei öffentlichen Registrierungen wie NuGet.org gibt es eine Verzögerung von 3-6 Stunden zwischen dem Push eines Pakets an die öffentliche Registrierung und wann es für den Download durch Ihren Feed verfügbar ist. Diese Verzögerung hängt von der Auftragsdauer und der Datenweitergabe ab. Die Latenz ist keine Latenz, wenn die Upstreamquelle ein Azure Artifacts Feed ist.

Offline-Upstreamquellen

Vorgelagerte Quellen sind eine hervorragende Möglichkeit, Ihre Verbraucher und Infrastruktur vor unplanierten Ausfällen zu schützen. Wenn Sie ein Paket aus einer upstream-Quelle installieren, wird eine Kopie dieses Pakets in Ihrem Feed gespeichert. Wenn die vorgelagerte Quelle herunter ist, die Wartung erfolgt oder nicht verfügbar ist, können Sie weiterhin auf die pakete zugreifen, die Sie von Ihrem Feed benötigen.

Häufig gestellte Fragen

F: Ich kann mein Paket nicht finden, obwohl ich es in einem meiner Feed-Upstreams sehen kann?

A: Pakete, die zu einem Upstream gehören, sind bald nach der Veröffentlichung verfügbar. Das Paket wird jedoch nur auf der Benutzeroberfläche Ihres Feed angezeigt, sobald sie aufgenommen wurden, was die Installation der Paketversion zum ersten Mal im nachgelagerten Feed erfordert.

F: Was sind Feedansichten?

A: Ansichten ermöglichen Entwicklern, nur eine Teilmenge von Paketversionen zu teilen, die getestet und überprüft wurden und keine Pakete ausschließen, die noch in der Entwicklung sind und/oder die Qualitätsleiste nicht erfüllt haben. Weitere Details finden Sie unter "Was sind Feedansichten ".

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

A: Stellen Sie sicher, dass der Besitzer des Feeds eine Ansicht als upstream-Quelle freigegeben hat.

F: Kann ein Benutzer mit Reader-Rollendownloadpaketen aus einer upstream-Quelle herunterladen?

A: Nein. Ein Benutzer mit der Rolle "Reader" 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 Paket löscht oder nicht veröffentlicht, das aus einer upstream-Quelle gespeichert ist?

A: Das Paket ist nicht für den Download aus dem Feed verfügbar und die Versionsnummer wird dauerhaft reserviert. Das Paket wird auch nicht mehr aus der Upstreamquelle gespeichert. Frühere und spätere Versionen des Pakets sind nicht betroffen.

F: Was geschieht, wenn ein Benutzer ein Paket, das aus einer upstream-Quelle gespeichert wurde, veraltet ist?

A: Eine Warnmeldung wird den Metadaten des Pakets hinzugefügt und angezeigt, wenn das Paket aus dem Feed angezeigt oder installiert wird.