Was sind upstream-Quellen?
Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019
Azure Artifacts-Upstreamquellen ermöglichen Entwicklern das bequeme Speichern von Paketen aus verschiedenen Quellen in einem einzigen Feed, einschließlich derjenigen, die Sie veröffentlichen und die aus externen Feeds oder öffentlichen Registrierungen wie NuGet.org, npmjs.com installiert wurden. Sobald upstream-Quellen aktiviert sind, werden alle pakete, die aus einer Upstreamquelle installiert wurden, automatisch in Ihrem Feed gespeichert.
Hinweis
Um Pakete von Upstreams 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" .
Gründe für die Verwendung von Upstreamquellen
Das Aktivieren von Upstreamquellen bietet mehrere Vorteile für die Verwaltung der Abhängigkeiten Ihres Produkts innerhalb eines einzelnen Feeds:
Einfachheit: Das Speichern aller Pakete in einem einzigen Feed vereinfacht Ihre Konfigurationsdateien wie NuGet.config, npmrc oder settings.xml. Mit nur einem Feed in Ihrer Konfigurationsdatei reduzieren Sie die Fehlerchancen und optimieren Das Setup.
Konsistente Builds: Ihr Feed löst Paketanforderungen in einer vorgegebenen Reihenfolge auf und sorgt auf diese Weise für vorhersagbarere und zuverlässigere Builds.
Paketintegrität: Ihr Feed behält Metadaten zu Paketen bei, die aus upstream-Quellen gespeichert wurden, sodass Sie ihre Authentizität überprüfen und sicherstellen können, dass Sie die originalen Versionen verwenden, nicht Kopien oder potenziell schädliche Versionen.
Zuverlässigkeit: Pakete, die aus Upstreamquellen installiert wurden, werden automatisch in Ihrem Feed gespeichert. Dadurch wird der fortgesetzte Zugriff sichergestellt, auch wenn die upstream-Quelle aufgrund von Wartungs- oder anderen Problemen nicht verfügbar ist, damit Sie sich weiter entwickeln und mit Vertrauen aufbauen können.
Bewährte Methoden für Paketanwender
Befolgen Sie die folgenden bewährten Methoden, um die Vorteile von Upstreamquellen als Paketverbraucher optimal nutzen zu können:
1. Verwenden eines einzelnen Feeds in Ihrer Konfigurationsdatei
Damit Ihr Feed eine deterministische Wiederherstellung bereitstellen kann, stellen Sie sicher, dass Ihre Konfigurationsdatei (z. B. nuget.config oder npmrc) nur auf einen Feed verweist, dessen Upstream-Quellen aktiviert sind.
Beispiele:
registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/ always-auth=true
<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. Durch die Verwendung von
<clear />
wird sichergestellt, dass alle anderen Paketquellen, die in Konfigurationsdateien höherer Ebene angegeben sind, ignoriert werden.
2. Bestellen Sie Ihre upstream-Quellen absichtlich
Wenn Sie nur öffentliche Register wie NuGet.org oder npmjs.com verwenden, spielt die Reihenfolge Ihrer upstream-Quellen keine Rolle. Anfragen an den Feed folgen der in Abschnitt beschriebenen Suchreihenfolge.
Wenn Sie jedoch mehrere Quellen verwalten, z. B. eine Kombination aus Feeds und öffentlichen Registrierungen, wird jede Upstreamquelle in der Reihenfolge durchsucht, die in den Konfigurationseinstellungen des Feeds definiert ist. In diesem Fall wird empfohlen, die öffentlichen Registrierungen an erster Stelle in der Liste der Upstreamquellen zu platzieren.
In einigen einzigartigen Szenarien ändern einige Organisationen Open-Source-Softwarepakete (OSS), um Sicherheitsbedenken zu beheben, Funktionen zu verbessern oder bestimmte interne Anforderungen zu erfüllen, die eine interne Neuerstellung des Pakets erfordern, anstatt es direkt aus einem öffentlichen Repository zu erhalten. Wenn Ihre Organisation diese Vorgehensweise befolgt, platzieren Sie die Upstreamquelle, die diese angepassten OSS-Pakete enthält, vor anderen öffentlichen Registrierungen. Dadurch wird sichergestellt, dass Ihre angepassten Versionen anstelle öffentlicher Versionen verwendet werden.
Bewährte Methoden für Feedbesitzer und Paketverleger
Um sicherzustellen, dass Ihr Feed einfach als Upstreamquelle konfiguriert werden kann, befolgen Sie die folgenden bewährten Methoden:
1. Verwenden der Standardansicht
Die Standardansicht für alle neu erstellten Feeds ist @Local
, die alle Pakete enthält, die in Ihrem Feed veröffentlicht wurden, sowie Pakete, die 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 Ihre Pakete in die ansicht @Release
höher stufen und diese Ansicht ihren Zielkunden zur Verfügung stellen. Ausführliche Informationen finden Sie unter Feedansichten.
2. 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. Nachdem ein Paket in der Standardansicht gespeichert wurde, können Benutzer, die es nutzen möchten, das Paketdiagramm auflösen und die gewünschte Version installieren. Pakete aus Upstreamquellen werden basierend auf der konfigurierten Ansicht für die entsprechende Upstreamquelle angezeigt. Weitere Informationen finden Sie unter Wie Upstreams das Set der verfügbaren Pakete erstellen.
Suchreihenfolge
Bei öffentlichen Paketmanagern, die mehrere Feeds unterstützen, z. B. NuGet und Maven, kann die Reihenfolge, in der Feeds abgefragt werden, manchmal unklar oder nicht deterministisch sein. NuGet verschickt z. B. parallele Anfragen an alle Feeds in der Konfigurationsdatei und verarbeitet die Antworten nach dem First-in-First-out-Prinzip (FIFO), was zu inkonsistenten Ergebnissen führen kann.
Upstreamquellen beseitigen diese Unsicherheit, indem sie eine strukturierte Suchreihenfolge erzwingen, 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.
Hinweis
Azure Artifacts unterstützt die Suche nach Paketen in Upstreamquellen nicht mithilfe des NuGet-Paket-Explorers in Visual Studio.
Speichern von Paketen aus Upstreamquellen
Wenn eine Upstreamquelle in Ihrem Feed aktiviert ist, speichert Azure Artifacts automatisch eine Kopie aller Pakete, die von einem Mitarbeiter oder höher aus dem Upstream installiert wurden.
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 diesem Fall würde die Installation von express auch ihre Abhängigkeiten speichern, wie z. B. akzeptiert.
Upstream-Quellen bieten einen wichtigen Schutz für Ihre Verbraucher und Infrastruktur, um sie vor unerwarteten Ausfällen zu schützen. Wenn die Upstream-Quelle Ausfallzeiten, Wartungen hat oder vorübergehend nicht verfügbar wird, können Sie die erforderlichen Pakete weiterhin aus Ihrem Feed abrufen und die Entwicklung fortsetzen.
Hinweis
Benutzerdefinierte Upstreamquellen werden nur für npm-Pakete unterstützt.
Überschreiben von Paketen aus Upstreamquellen
Beachten Sie beim Aktivieren von Upstreamquellen, dass Sie keine Paketversion veröffentlichen können, die bereits in einer Upstreamquelle vorhanden ist. Wenn Sie z. B. die NuGet.org upstream aktivieren, können Sie das Newtonsoft.Json 10.0.3-Paket nicht veröffentlichen, da diese Version bereits auf NuGet.org verfügbar 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.
Dieser Prozess stellt sicher, dass Sie die gewünschte Version veröffentlichen können, während die Integrität Ihrer upstream-Quellen beibehalten wird.
Hinweis
Paketversionen sind unveränderlich. Gespeicherte Pakete verbleiben im Feed, auch wenn die Upstreamquelle deaktiviert oder entfernt wird.
Gesundheitsstatus der Upstream-Quellen
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
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 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.
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 veranlasst, dass im Downstream eine Kopie des Pakets aus dem Upstream gespeichert wird, nach der es dauerhaft gespeichert und für alle Nutzer 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 freigegeben hat. Weitere Informationen finden Sie unter Hinzufügen eines Feeds in einer anderen Organisation als upstream-Quelle.
F: Kann ein Benutzer mit der Feed Reader-Rolle Pakete aus einer Upstream-Quelle herunterladen?
A: Nein. Ein Benutzer mit der Rolle Feedleser in einem Azure Artifacts-Feed kann nur Pakete herunterladen, die im Feed gespeichert wurden. Pakete werden im Feed gespeichert, wenn ein Feed- und Upstream-Leser (Mitarbeiter), Feed-Publisher (Mitwirkender)oder Feed-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 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 Upstream-Quelle 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. Diese Warnung wird immer dann angezeigt, wenn das Paket aus dem Feed angezeigt oder installiert wird.