Erstellen eines vollständigen Paketdiagramms

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

Hinweis

Überprüfen Sie Ihren Pakettyp, um die Kompatibilität mit Azure DevOps Services oder lokal sicherzustellen.

Wenn Sie ein Paket freigeben, ist es wichtig, sicherzustellen, dass alle Paketabhängigkeiten auch verfügbar sind. Azure-Artefakte empfehlen die Verwendung von Upstreamquellen zum Veröffentlichen und Nutzen von Paketabhängigkeiten. Wenn ein Paket aus einer upstream-Quelle zum ersten Mal verwendet wird, wird eine Kopie dieses Pakets im Feed gespeichert, sodass ihre Kopie auch dann, wenn die Upstreamquelle heruntergeht, für Sie und Ihre Kunden verfügbar bleibt.

So erstellen vorgelagerte Quellen den Satz der verfügbaren Pakete

Da Azure-Artefakte-Feeds andere Feeds als vorgelagerte Quellen aufweisen können, scheint es auf der Oberfläche möglich, einen Zyklus von Upstreamquellen zu haben, wo Feed A vor dem Feed B, der vor dem Feed C vorgeschaltet wird, was vor dem Feed A zurückgibt. Ein solcher Zyklus könnte Paketanforderungen unterbrechen, indem ein Benutzer eine unendliche Schleife erstellt, in der ein Benutzer A für ein Paket fragt, Dann fragt A B, dann fragt B C, dann C, dann fragt C erneut, usw. Upstreamquellen sind so konzipiert, dass dieser Fehler verhindert wird.

Wenn ein Feed seine vorgelagerten Quellen für ein Paket abhört, gibt Azure-Artefakte die Pakete in der Ansicht zurück, die für diese Upstreamquelle konfiguriert ist. Daher führt eine Abfrage zum Feed A nicht tatsächlich zu einer transitiven Abfrage zum Feed C (A -> B -> C), da Ansichten schreibgeschützt sind. Ein Zugriff auf alle Pakete von C, die ein Benutzer von B zuvor in B gespeichert hat, aber nicht die vollständige Gruppe von Paketen, die in C verfügbar sind.

Daher fällt der Onus auf B, um sicherzustellen, dass seine lokalen Pakete ein vollständiges Abhängigkeitsdiagramm darstellen, sodass Benutzer, die das Paket von B über eine upstream-Quelle aus einem anderen Feed verwenden, erfolgreich auflösen und ihr gewünschtes B-Paket installieren können.

Beispiel: Erstellen der Gruppe der verfügbaren Pakete

Angenommen, drei Feeds, Fabrikam, Contoso und AdventureWorks. In diesem Beispiel sehen wir uns die Pakete an, die für den Fabrikam-Feed verfügbar sind, während wir upstream-Quellen hinzufügen.

Zunächst verfügt Fabrikam über keine Upstreamquellen, und Benutzer, die mit Fabrikam verbunden sind, können versionen 1.0.0 und 2.0.0 des Widgets-Pakets nur installieren. Ebenso verfügt Contoso über keine Upstreamquellen, und Benutzer, die mit Contoso verbunden sind, können versionen 1.0.0 und 3.0.0 des Gizmos-Pakets nur installieren. Ditto für den AdventureWorks-Feed, in dem verbundene Benutzer nur Versionen 1.0.0 und 2.0.0 des Gadgets-Pakets oder Version 1.0.0 des Things-Pakets installieren können.

drei verschiedene Feeds ohne Upstreamquellen

Berücksichtigen Sie als Nächstes, was geschieht, wenn Contoso AdventureWorks als upstream-Quelle hinzufügt. Ein Benutzer, der mit Contoso verbunden ist, kann jede Version von Gizmos, jede Version von Gadgets oder eine beliebige Version von Dingen installieren. Wenn Gadgets@2.0.0 installiert ist, wird diese Paketversion in Contoso gespeichert (mit einem Link zurück zu AdventureWorks).

Contoso fügt AdventureWorks als upstream-Quelle hinzu.

Jetzt haben wir den Fabrikam-Feed Contoso als upstream-Quelle hinzugefügt. Ein Benutzer, der mit Fabrikam verbunden ist, kann jede Version von Widgets, jede Version von Gizmos, aber nur gespeicherte Versionen (2.0.0) von Gadgets installieren.

Fabrikam fügt Contoso als upstream-Quelle hinzu

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

Fabrikam-Benutzer können Gadgets 1.0.0 und alle Versionen von Dingen nicht installieren.