Paketdiagramme in Azure Artifacts

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

Beim Freigeben eines Pakets ist es wichtig, sicherzustellen, dass alle Abhängigkeiten dieses Pakets in Ihrem Feed verfügbar sind, indem sie sie aus einer Upstreamquelle verwenden. Nachdem Sie ein Paket aus einer Upstreamquelle verwendet haben, wird eine Kopie in Ihrem Feed gespeichert. Dadurch wird sichergestellt, dass auch dann, wenn auf die upstream-Quelle nicht zugegriffen werden kann, Ihre Kopie weiterhin sowohl für Sie als auch für Ihre Feedkunden verfügbar ist.

So konstruieren Upstreams den Satz verfügbarer Pakete

Da Azure Artifacts-Feeds andere Feeds als Upstreams aufweisen können, gibt es ein Potenzial zum Erstellen von Zyklen vorgelagerter Quellen, bei denen feed A upstreams zu Feed B, die vorgelagert zum Feed C und schließlich feed C vor dem Feed A zurück zu Feed A feed A. Ein solcher Zyklus könnte, falls nicht ordnungsgemäß verwaltet, zu Problemen mit Paketanforderungen führen, eine Endlosschleife erstellen, in der ein Benutzer ein Paket von Feed A anfordert, dann A-Anforderungen von B, dann B-Anforderungen von C und schließlich C-Anforderungen zurück an A, um eine Schleife zu bilden.

Vorgelagerte Quellen sollen solche Situationen verhindern. Wenn ein Feed ein Paket aus den upstream-Quellen sucht, empfängt er die Pakete in der Ansicht, die für diese upstream-Quelle konfiguriert ist. Dies bedeutet, dass das Abfragen von Feed A keine transitive Abfrage zum Feed C (A -> B -> C) auslöst, da Ansichten schreibgeschützt sind. Daher hat Feed A Zugriff auf alle Pakete von C , die zuvor von einem Benutzer in B gespeichert wurden, aber nicht auf den vollständigen Satz von Paketen, die in C verfügbar sind.

Dadurch liegt die Verantwortung für Feed B, um sicherzustellen, dass ihre lokalen Pakete eine vollständige Abhängigkeitsdiagramm darstellen. Auf diese Weise können Benutzer, die das B-Paket über eine Upstreamquelle aus einem anderen Feed nutzen, das Diagramm erfolgreich beheben und ihr gewünschtes B-Paket installieren, ohne dass Probleme auftreten.

Beispiel: Erstellen des Satzes verfügbarer Pakete

Betrachten wir drei Feeds: Fabrikam, Contoso und AdventureWorks. In dieser Abbildung untersuchen wir die verfügbaren Pakete für den Fabrikam-Feed, während wir Upstreamquellen einführen.

Zunächst verfügt Fabrikam über keine Upstreamquellen, sodass Benutzer, die mit Fabrikam verbunden sind, nur die Versionen 1.0.0 und 2.0.0 des Widgets-Pakets installieren können. Ebenso verfügt Contoso über keine Upstreamquellen, schränkt benutzer, die mit Contoso verbunden sind, nur die Versionen 1.0.0.0 und 3.0.0 des Gizmos-Pakets ein. Das gleiche gilt für den AdventureWorks-Feed, in dem verbundene Benutzer versionen 1.0.0 und 2.0.0 des Gadgets-Pakets oder version 1.0.0 des Pakets "Dinge" nur installieren können.

Eine Abbildung mit drei verschiedenen Feeds ohne Upstreamquellen.

Sehen wir uns nun das Szenario an, in dem Contoso AdventureWorks als Upstreamquelle hinzufügt. Wenn ein Benutzer mit Contoso verbunden ist, erhält er Zugriff auf eine breitere Palette von Paketen. Sie können jede Version von Gizmos, Gadgets oder Dingen installieren. Wenn der Benutzer z. B. Gadgets@2.0.0 installiert, wird diese spezifische Paketversion mit einem Link zurück zu AdventureWorks in Contoso gespeichert.

Eine Abbildung, in der Contoso AdventureWorks als Upstreamquelle hinzufügt.

Betrachten wir nun eine Situation, in der der Fabrikam-Feed Contoso als Upstreamquelle hinzufügt. Ein benutzer, der mit Fabrikam verbunden ist, kann jede Version von Widgets, jede Version von Gizmos, aber NUR GESPEICHERTe Versionen von Gadgets (2.0.0) installieren.

Abbildung des Hinzufügens von Contoso als Upstreamquelle von Fabrikam.

Der Benutzer kann Version 1.0.0 von Gadgets oder einer beliebigen Version der Dinge nicht installieren, da diese Paketversionen nicht von einem Contoso-Benutzer in Contoso gespeichert wurden.

Abbildung der Pakete, die fabrikam-Benutzern zur Verfügung stehen.