Azure Artifacts Upstream-Quellen
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Mithilfe von Upstreamquellen können Sie Pakete aus verschiedenen Quellen bequem in einem einzigen Feed speichern. Dazu gehören Pakete, die Sie veröffentlichen und von externen Feeds und öffentlichen Registrierungen wie NuGet.org, npmjs.com, Maven Central und PyPI nutzen. Nachdem Sie upstream-Quellen aktiviert haben, werden alle aus diesen Upstreamquellen installierten Pakete automatisch in Ihrem Feed gespeichert.
Hinweis
Um Pakete vor dem Upstream zu speichern, müssen Sie über die Rolle " Feed" und "Upstream Reader" (Mitarbeiter) oder höher verfügen. Weitere Informationen finden Sie unter "Berechtigungen verwalten" .
Vorteile
Das Aktivieren von Upstreamquellen bietet mehrere Vorteile für die Verwaltung der Abhängigkeiten Ihres Produkts in einem einzigen Feed:
Einfachheit: Wenn Sie alle Ihre Pakete in einem einzigen Feed veröffentlichen, vereinfacht es Ihre Konfigurationsdateien wie NuGet.config, npmrc oder settings.xml. Mit nur einem Feed in Ihrer Konfigurationsdatei reduzieren Sie die Wahrscheinlichkeit von Fehlern und Fehlern, wodurch Das Setup optimiert wird.
Determinismus: Ihr Feed löst Paketanforderungen in der Reihenfolge auf, was zu einer größeren Konsistenz bei der Neuerstellung des Codes führt.
Provenienz: Ihr Feed speichert Informationen zu den Paketen, die sie aus upstream-Quellen gespeichert haben. Auf diese Weise können Sie überprüfen, ob Sie das ursprüngliche Paket verwenden und keine Kopie oder eine potenziell schädliche Version verwenden.
Bedenken Sie: Jedes paket, das aus upstream-Quellen installiert ist, wird automatisch in Ihrem Feed gespeichert. Dies bedeutet, dass Sie auch dann, wenn die upstream-Quelle deaktiviert, entfernt oder gewartet wird, weiterhin vertrauenswürdig entwickeln und aufbauen können, da Sie über eine Kopie dieses Pakets in Ihrem Feed verfügen.
Bewährte Methoden : Paketverbraucher
Befolgen Sie die folgenden bewährten Methoden, um die Vorteile von Upstreamquellen als Paketverbraucher optimal nutzen zu können:
Verwenden Sie einen einzelnen Feed in Ihrer Konfigurationsdatei:
Damit Ihr Feed eine deterministische Wiederherstellung bereitstellt, stellen Sie sicher, dass Ihre Konfigurationsdatei wie "nuget.config" oder ".npmrc" nur auf einen Feed verweist, für den die upstream-Quellen aktiviert sind. Ein Beispiel finden Sie unten:
<packageSources>
<clear />
<add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>
Hinweis
NuGet kompiliert mehrere Konfigurationsdateien , um den vollständigen Satz der anzuwendenden Optionen zu ermitteln. Mithilfe von <clear />
können Sie alle anderen Paketquellen, die in Konfigurationsdateien höherer Ebene angegeben sind, effektiv ignorieren.
registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true
Ordnen Sie Ihre upstream-Quellen absichtlich an:
Wenn Sie ausschließlich öffentliche Register wie nuget.org oder npmjs.com verwenden, ist die Reihenfolge Ihrer upstream-Quellen irrelevant. Anforderungen an den Feed folgen der Sequenz, die im Abschnitt "Suchreihenfolge " beschrieben ist.
Wenn Sie jedoch mehrere Quellen verwalten, die eine Kombination aus Feeds und öffentlichen Registrierungen enthalten können, wird jede Upstreamquelle in der Reihenfolge durchsucht, in der sie 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 einigen einzigartigen Szenarien wählen bestimmte Organisationen die Anpassung von Open Source-Softwarepaketen (OSS) aus. Dies könnte die Behandlung von Sicherheitsbedenken, die Verbesserung der Funktionalität oder die Erfüllung spezifischer Anforderungen umfassen, die eine interne Neuerstellung des Pakets erfordern, anstatt es direkt aus einer öffentliches Repository zu erhalten. Wenn Ihre Organisation diese Vorgehensweise befolgt, empfiehlt es sich, die upstream-Quelle mit diesen geänderten OSS-Paketen vor den Public Package Managern zu positionieren. Diese Anordnung stellt die Verwendung der angepassten Versionen Ihrer Organisation sicher.
Verwenden Sie die vorgeschlagene 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 How upstreams construct the set of available packages for more details.
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 Sie die Standardansicht:
Die Standardansicht für alle neu erstellten Feeds ist die @Local
Ansicht, die alle Pakete enthält, die in Ihrem Feed veröffentlicht oder aus upstream-Quellen gespeichert wurden.
Wenn Sie andere Ansichten wie z. B. eine Ansicht für neu veröffentlichte Paketversionen verwenden möchten, können Sie Ihr Paket in die @Release
Ansicht höher stufen und diese Ansicht dann für Ihre Paketkunden verfügbar machen.
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 in der Standardansicht gespeichert wird, 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 Paketmanager, die mehrere Feeds wie NuGet und Maven unterstützen, kann die Reihenfolge, in der Feeds abgefragt werden, manchmal unklar oder nicht deterministisch sein. In NuGet werden z. B. parallele Abfragen an alle Feeds in der Konfigurationsdatei gesendet, und die Antworten werden in einer First-In-First-Out-Methode (First-In, First-Out, FIFO) verarbeitet.
Upstreamquellen behandeln dieses nicht deterministische Verhalten, indem sie den Feed und seine upstream-Quellen in der folgenden Reihenfolge durchsuchen:
Pakete, die direkt im Feed veröffentlicht wurden.
Pakete, die aus einer Upstreamquelle gespeichert wurden.
Pakete, die aus upstream-Quellen verfügbar sind. Jede Upstreamquelle wird in der Reihenfolge durchsucht, in der sie in der Konfiguration des Feeds aufgeführt ist.
Um die vorteile des schnellen Nachschlagefeatures zu nutzen, empfiehlt es sich, nur einen Feed in ihre Konfigurationsdatei einzuschließen.
Hinweis
Die Suche nach Paketen in Upstreamquellen mit dem NuGet-Paket-Explorer wird nicht unterstützt.
Speichern von Paketen aus Upstreamquellen
Wenn Sie upstream-Quellen für Ihren Feed aktivieren und ein Paket aus einer Upstreamquelle installieren, wird eine automatische Kopie dieses Pakets in Ihrem Feed gespeichert. Diese Methode verbessert die Downloadleistung und spart Netzwerkbandbreite.
Beispielsweise können Sie Pakete direkt aus der Upstreamquelle mithilfe eines Befehls wie npm install express installieren. Alternativ können Pakete als Teil eines Abhängigkeitsauflösungsprozesses installiert werden. In letzterem Szenario würde die Installation von Express auch ihre Abhängigkeiten speichern, z . B. akzeptiert.
Hinweis
Benutzerdefinierte Upstreamquellen werden nur für npm-Pakete unterstützt.
Überschreiben von Paketen aus Upstreamquellen
Beim Aktivieren von Upstreamquellen ist es wichtig zu beachten, dass das Veröffentlichen einer Paketversion, die bereits in einer Upstreamquelle 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 genaue Version 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 die folgenden Schritte ausführen:
- Deaktivieren Sie die relevante Upstreamquelle.
- Veröffentlichen Sie Ihr Paket.
- Aktivieren Sie die Upstreamquelle erneut.
Hinweis
Paketversionen sind unveränderlich. Gespeicherte Pakete verbleiben im Feed, auch wenn die Upstreamquelle deaktiviert oder entfernt wird.
Integritätsstatus der Upstreamquellen
Wenn ein Feed über eine fehlerhafte Upstreamquelle verfügt, können die Metadaten für Pakete desselben Protokolls nicht mehr aktualisiert werden. Führen Sie die folgenden Schritte aus, um den Integritätsstatus Ihrer Upstreamquellen zu überprüfen:
Melden Sie sich bei Ihrer Azure DevOps-Organisation an, und navigieren Sie dann zu Ihrem Projekt.
Wählen Sie Artefakte und dann Ihren Feed im Dropdownmenü aus.
Wählen Sie das Zahnradsymbol aus, um zu Ihren Feedeinstellungen zu navigieren, und wählen Sie dann upstream-Quellen aus.
Wenn Fehler auftreten, wird eine Warnmeldung angezeigt. Wenn Sie auf den Status "Fehlgeschlagen " klicken, werden weitere Details bereitgestellt, einschließlich der Ursache des Fehlers und anweisungen zum Beheben des Fehlers.
Hinweis
Im Falle von öffentlichen Registrierungen wie NuGet.org gibt es eine Verzögerung von 3 bis 6 Stunden zwischen dem Zeitpunkt, zu dem ein Paket an die öffentliche Registrierung verschoben wird und wann es zum Download verfügbar wird. Diese Verzögerung hängt vom Auftragszeitpunkt und der Datenweitergabe ab. Wenn die Upstreamquelle jedoch ein Azure Artifacts-Feed ist, beträgt die Latenz in der Regel nicht mehr als ein paar Minuten.
Offline-Upstreamquellen
Upstream-Quellen dienen als wertvoller Schutz für Ihre Verbraucher und Infrastruktur, um sie vor unvorhergesehenen Ausfällen abzuschirmen. Wenn Sie ein Paket aus einer Upstreamquelle installieren, wird eine Kopie dieses Pakets in Ihrem Feed gespeichert. Falls die upstream-Quelle Ausfallzeiten erfährt, eine Wartung erfährt oder vorübergehend nicht verfügbar ist, können Sie weiterhin die erforderlichen Pakete aus Ihrem Feed abrufen und Ihre Entwicklung fortsetzen.
Häufig gestellte Fragen
F: Ich kann mein Paket nicht finden, obwohl ich es in einem der Upstreams meines Feeds sehen kann?
A: Pakete aus Upstreamquellen werden bald nach der Veröffentlichung im nachgeschalteten Feed verfügbar. Das Paket ist jedoch nur für Leser sichtbar, nachdem es im Feed gespeichert wurde. Ein Paket wird gespeichert, wenn ein Benutzer mit Feed und Upstream Reader (Mitarbeiter) oder höheren Berechtigungen die Version im nachgeschalteten Feed installiert. Dadurch wird die nachgelagerte Speicherung einer Kopie des Pakets aus dem Upstream ausgelöst, nach der sie dauerhaft gespeichert und für alle Leser verfügbar ist. Dies ist der Fall, wenn die Paketversion im Abschnitt "Paketversionen" der Web-UI sichtbar wird.
F: Was sind Feedansichten?
A: Ansichten ermöglichen Entwicklern die selektive Freigabe einer Teilmenge von Paketversionen, die getestet und überprüft wurden, mit Ausnahme von Paketen, die noch in der Entwicklung sind oder die Qualitätskriterien 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 Feedreader-Rollenpaketen aus einer upstream-Quelle herunterladen?
A: Nein. Ein Benutzer mit Feedleserrolle in einem Azure Artifacts-Feed kann nur Pakete herunterladen, die im Feed gespeichert wurden. Pakete werden im Feed gespeichert, wenn ein Feed- und Upstream-Reader (Mitarbeiter), ein Feedherausgeber (Mitwirkender) oder ein Feedbesitzer diese Pakete aus dem Upstream installieren.
F: Was geschieht, wenn ein Benutzer ein aus einer Upstreamquelle gespeichertes Paket löscht oder die Veröffentlichung aufhebt?
A: Das Paket ist für den Download aus dem Feed nicht verfügbar, und die Versionsnummer ist dauerhaft reserviert. Darüber hinaus wird das Paket nicht mehr aus der Upstreamquelle gespeichert. Frühere und spätere Versionen des Pakets bleiben unberührt.
F: Was geschieht, wenn ein Benutzer ein aus einer Upstreamquelle gespeichertes Paket als veraltet bezeichnet?
A: Wenn ein Benutzer ein Paket nicht mehr unterstützt, wird der Metadaten des Pakets eine Warnmeldung hinzugefügt, die immer dann angezeigt wird, wenn das Paket aus dem Feed angezeigt oder installiert wird.