Paketdiagram i Azure Artifacts
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
När du släpper ett paket är det viktigt att se till att alla beroenden för paketet är tillgängliga i ditt flöde genom att använda dem från en uppströmskälla. När du har förbrukat ett paket från en uppströmskälla sparas en kopia i feeden. Detta säkerställer att även om den överordnade källan blir otillgänglig fortsätter din kopia att vara tillgänglig för både dig och dina feedkonsumenter.
Hur överordnade konstruerar uppsättningen med tillgängliga paket
Eftersom Azure Artifacts-feeds kan ha andra feeds som uppströms finns det en potential för att skapa cykler av överordnade källor, där feed A uppströms för att mata B, som uppströms för att mata C och så småningom mata C uppströms tillbaka för att mata A. En sådan cykel, om den inte hanteras korrekt, kan leda till problem med paketbegäranden, skapa en oändlig loop där en användare begär ett paket från feed A, sedan A-begäranden från B, sedan B-begäranden från C och slutligen C-begäranden tillbaka till A och bildar en loop.
Överordnade källor är utformade för att förhindra sådana situationer. När ett flöde söker efter ett paket från dess överordnade källor tar det emot paketen i vyn som konfigurerats för den överordnade källan. Det innebär att frågeflöde A inte utlöser en transitiv fråga för att mata C (A -> B -> C) eftersom vyer är skrivskyddade. Därför har feed A åtkomst till alla paket från C som tidigare har sparats i B av en användare, men inte den fullständiga uppsättningen paket som är tillgängliga i C.
Detta lägger ansvaret på feed B för att säkerställa att dess lokala paket representerar ett fullständigt beroendediagram. På så sätt kan användare som använder B:s paket via en uppströmskälla från en annan feed lösa grafen och installera önskat B-paket utan att stöta på problem.
Exempel: skapa uppsättningen med tillgängliga paket
Låt oss överväga tre feeds: Fabrikam, Contoso och AdventureWorks. I den här bilden ska vi undersöka de tillgängliga paketen i Fabrikam-feeden när vi introducerar överordnade källor.
Fabrikam har inledningsvis inga överordnade källor, vilket gör att användare som är anslutna till Fabrikam endast kan installera versionerna 1.0.0 och 2.0.0 i Widgets-paketet. På samma sätt har Contoso inga överordnade källor, vilket begränsar användare som är anslutna till Contoso till att endast installera versionerna 1.0.0 och 3.0.0 av Gizmos-paketet. Samma sak gäller för AdventureWorks-feeden, där anslutna användare endast kan installera version 1.0.0 och 2.0.0 av Gadgets-paketet eller version 1.0.0 av Things-paketet.
Nu ska vi utforska scenariot där Contoso lägger till AdventureWorks som en uppströmskälla. När en användare är ansluten till Contoso får de åtkomst till ett bredare utbud av paket. De kan installera valfri version av Gizmos, Gadgets eller Things. Om användaren till exempel installerar Gadgets@2.0.0 sparas den här specifika paketversionen i Contoso med en länk tillbaka till AdventureWorks.
Nu ska vi överväga en situation där Fabrikam-feeden lägger till Contoso som en uppströmskälla. En användare som är ansluten till Fabrikam kan installera valfri version av Widgets, vilken version som helst av Gizmos, men ENDAST SPARADE versioner av Gadgets (2.0.0).
Användaren kommer inte att kunna installera version 1.0.0 av Gadgets eller någon version av Things, eftersom paketversionerna inte har sparats i Contoso av en Contoso-användare.