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 nutzen. Nachdem Sie eine Upstreamquelle aktiviert haben, kann jeder benutzer, der mit Ihrem Feed verbunden ist, ein Paket von voraufwärts installieren und eine Kopie wird in Ihrem Feed gespeichert.

Hinweis

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

Vorteile

Vorgelagerte Quellen 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 auf, sodass die Neuerstellung Ihres Codes konsistenter ist.
  • Provenance: Ihr Feed kennt die Herkunft der Pakete, die sie aus vorgelagerten Quellen gespeichert hat, damit Sie überprüfen können, ob Sie das ursprüngliche Paket verwenden und keine Kopie oder schädliches Paket.
  • Bedenken Sie, dass eine Kopie in Ihrem Feed für jedes Paket gespeichert wird, das aus vorgelagerten Quellen installiert ist. Wenn die vorgelagerte Quelle deaktiviert, entfernt oder wartungsfrei ist, können Sie weiterhin weiter entwickeln und erstellen, da Sie über eine Kopie dieses Pakets in Ihrem Feed verfügen.

Bewährte Methoden – Verpacken von Verbrauchern

Befolgen Sie die folgenden bewährten Methoden, um die Vorteile der vorgelagerten Quellen als Paketverbraucher zu nutzen:

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

    NuGet erstellt mehrere Konfigurationsdateien, um den vollständigen Satz von zu verwendenden Optionen zu ermitteln. Die Verwendung <clear /> ermöglicht es uns, alle anderen Paketquellen zu 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
    

Ordnen Sie Ihre vorgelagerten Quellen absichtlich an

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 wie eine Mischung aus Feeds und öffentlichen Registrierungen verwenden, wird jeder Upstream in der Reihenfolge durchsucht, 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 intern erstellt werden, anstatt direkt aus dem öffentlichen Repository zu nutzen. Wenn Ihre Organisation diesem Muster folgt, platzieren Sie die upstream-Quelle, 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 Upstreamquellen eine Reihe von verfügbaren Paketen erstellen. Weitere Details finden Sie in vollständigen Paketdiagrammen .

Bewährte Methoden: Feedbesitzer/Paketverleger

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 vorgelagerten Quellen gespeichert wurden.

Wenn Sie Ansichten verwenden möchten, um neue Paketversionen freizugeben, können Sie Ihr Paket auf eine Ansicht bewerben, z @release . B. für Ihre Verbraucher verfügbar machen.

Erstellen eines Paketdiagramms

Wenn ein Feed seine vorgelagerte Quelle für ein Paket abfragt, Azure Artifacts die Pakete in der Ansicht zurückgeben, 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 Upstreamquelle gespeichert wurden.

  3. Pakete, die aus vorgelagerten Quellen verfügbar sind: Jeder Upstream wird in der Reihenfolge durchsucht, in der er 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 Konfigurationsdatei einzuschließen.

Hinweis

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

Speichern von Paketen aus vorgelagerten Quellen

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

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

Überschreiben von Paketen aus vorgelagerten Quellen

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 vorgeschaltete NuGet.org 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 vorgelagerte Quelle 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 über eine fehlerhafte Upstreamquelle verfügt, können die Metadaten nicht mehr für Pakete desselben Protokolls aktualisiert werden. Wenn Sie den Integritätsstatus Ihrer Upstreamquelle anzeigen möchten, wählen Sie das Zahnradsymbol gear icon aus, um auf Ihre Feedeinstellungen zuzugreifen, und wählen Sie dann upstream-Quellen aus.

Wenn Fehler auftreten, wird eine Warnmeldung angezeigt. Auf der Einstellungsseite wird auch angegeben, welche der vorgelagerten Quellen fehlschlägt. Wenn Sie den vorgelagerten Fehler auswählen, erhalten Sie weitere Details, z. B. den Grund für Fehler und Anweisungen zur Lösung.

Screenshot showing the upstream source's health status

Hinweis

Für öffentliche Registrierungen wie NuGet.org gibt es eine Verzögerung von 3 bis 6 Stunden zwischen dem Push eines Pakets an die öffentliche Registrierung und wann sie zum Download verfügbar ist. Diese Verzögerung hängt von der Zeitdauer des Auftrags und der Datenverteilung ab. Es gibt keine Latenz, wenn die Upstreamquelle ein Azure Artifacts Feed ist.

Offline-Upstreamquellen

Vorgelagerte Quellen sind eine hervorragende Möglichkeit, Ihre Verbraucher und Infrastruktur vor nicht geplanten Ausfallen zu schützen. Wenn Sie ein Paket aus einer Upstreamquelle installieren, wird eine Kopie dieses Pakets in Ihrem Feed gespeichert. Wenn die vorgelagerte Quelle herunterfällt, wartungsweise 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 Feedvorlaufe sehen kann?

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

F: Was sind Feedansichten?

A: Ansichten ermöglichen Es 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 Informationen finden Sie unter "Was sind Feedansichten ".

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

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

F: Kann ein Benutzer mit Reader-Rollenpaketen 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 vor dem Vorlauf installiert.

F: Was geschieht, wenn ein Benutzer ein Paket, das aus einer Upstreamquelle gespeichert ist, löschen oder aufheben?

A: Das Paket steht nicht zum Download aus dem Feed zur Verfügung, 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.