Dela via


Vad är överordnade källor?

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Uppströmskällor i Azure Artifacts gör det möjligt för utvecklare att lagra paket från olika ursprung i en enda feed, inklusive paket som publicerats i flödet och de som har installerats från offentliga register som NuGet.org eller npmjs.com. När överordnade källor har aktiverats sparas alla paket som installeras från en uppströmskälla automatiskt i feeden.

Notering / Anteckning

Om du vill spara paket från uppströms måste du ha rollen Feed och Upstream Reader (Kollaboratör) eller högre. Mer information finns i Feed-roller och -behörigheter .

Varför ska du använda överordnade källor?

Om du aktiverar överordnade källor finns det flera fördelar med att hantera produktens beroenden i en enda feed:

  • Enkelhet: Om du lagrar alla paket i en enda feed förenklas konfigurationsfilerna, till exempelNuGet.config, npmrc eller settings.xml. Med bara en feed i konfigurationsfilen minskar du konfigurationskomplexiteten och minimerar fel.

  • Konsekventa versioner: Feeden löser paketbegäranden i en definierad ordning, vilket säkerställer förutsägbara och tillförlitliga byggen i olika miljöer.

  • Package Integrity: Ditt flöde behåller metadata om paket som sparats från överordnade källor, så att du kan verifiera deras äkthet och se till att du använder de ursprungliga versionerna, inte kopior eller potentiellt skadliga versioner.

  • Reliability: Paket som installeras från överordnade källor sparas automatiskt i feeden. Detta säkerställer fortsatt åtkomst även om den överordnade källan blir tillfälligt otillgänglig på grund av underhåll eller andra problem så att du kan fortsätta utveckla och bygga med säkerhet.

Metodtips för paketkonsumenter

Följ dessa metodtips för att dra full nytta av fördelarna med överordnade källor som paketkonsument:

Använda en enda feed i konfigurationsfilen

Se till att konfigurationsfilen (till exempel nuget.config eller npmrc) endast refererar till en feed med överordnade källor aktiverade för att flödet ska kunna tillhandahålla en deterministisk återställning.

  • Exempel:

    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>
    

    Notering / Anteckning

    NuGet kompilerar flera konfigurationsfiler för att fastställa den fullständiga uppsättningen alternativ som ska tillämpas. Om du använder <clear /> ser du till att alla andra paketkällor som anges i konfigurationsfiler på högre nivå ignoreras.

Beställ dina överordnade källor avsiktligt

Om du bara använder offentliga register som NuGet.org eller npmjs.com påverkar ordningen på överordnade källor inte beteendet. Begäranden till flödet följer den sekvens som beskrivs i sökordning avsnittet.

Men när du hanterar flera källor, till exempel en kombination av feeds och offentliga register, genomsöks varje uppströmskälla i den ordning som definieras i feedens konfigurationsinställningar. I dessa fall rekommenderar vi att du placerar de offentliga registren först i listan över överordnade källor.

I vissa unika scenarier ändrar vissa organisationer OSS-paket (open-source software) för att hantera säkerhetsproblem, förbättra funktionaliteten eller uppfylla specifika interna krav som kräver att paketet återskapas internt i stället för att hämta det direkt från en offentlig lagringsplats. Om din organisation följer den här metoden placerar du den överordnade källan som innehåller dessa anpassade OSS-paket före andra offentliga register. Detta säkerställer att dina anpassade versioner används i stället för de offentliga.

Metodtips för feedägare och paketutgivare

Följ dessa metodtips för att säkerställa att feeden enkelt kan konfigureras som en uppströmskälla:

Använd standardvyn

Alla nyligen skapade feeds använder @Local vyn som standard. Den här vyn innehåller:

  • Paket som publicerats direkt till feeden.
  • Paket som sparats från överordnade källor.

Om du vill använda andra vyer, till exempel en vy för nyligen släppta paketversioner, kan du flytta upp dina paket till @Release-vyn och sedan göra den vyn tillgänglig för dina målkonsumenter. Mer information finns i flödesvyer.

Skapa ett paketdiagram

Om du vill skapa ett paketdiagram ansluter du helt enkelt till feedens standardvy och installerar det paket som du vill dela. När ett paket har sparats i standardvyn kan användare som vill använda det lösa paketdiagrammet och installera den önskade versionen. Paket från överordnade källor visas baserat på den konfigurerade vyn för motsvarande överordnade källa. Mer information finns i Hur överordnade konstruerar uppsättningen tillgängliga paket .

Sökordning

För offentliga pakethanterare som stöder flera feeds, till exempel NuGet och Maven, kan ordningen i vilken feeds efterfrågas ibland vara oklar eller icke-terministisk. NuGet skickar till exempel parallella frågor till alla feeds i konfigurationsfilen och bearbetar svar på ett FIFO-sätt (först in, först ut), vilket kan leda till inkonsekventa resultat.

Azure Artifacts uppströmskällor eliminerar denna osäkerhet genom att framtvinga en strukturerad sökordning genom att söka i feeden och dess överordnade källor i följande ordning:

  1. Paket som har publicerats direkt till feeden.

  2. Paket som har sparats från en uppströmskälla.

  3. Paket som är tillgängliga från överordnade källor. Varje uppströmskälla genomsöks i den ordning den anges i feedens konfiguration.

Notering / Anteckning

Azure Artifacts stöder inte sökning efter paket i ursprungliga källor med NuGet-paketutforskaren i Visual Studio.

Spara paket från överordnade källor

När en uppströmskälla är aktiverad i feeden sparar Azure Artifacts automatiskt en kopia av alla paket som har installerats av en medarbetare eller högre från den överordnade källan.

Du kan till exempel installera paket direkt från den överordnade källan med hjälp av ett kommando som npm install express. Alternativt kan paket installeras som en del av beroendelösningen, så om du installerar Express sparas även dess beroenden, till exempel accepter.

Överordnade källor ger ett viktigt skydd för dina konsumenter och infrastruktur. Om det offentliga registret drabbas av stilleståndstid, underhåll eller blir tillfälligt otillgängligt kan du fortfarande hämta de nödvändiga paketen från feeden och fortsätta utvecklingen.

Notering / Anteckning

Anpassade överordnade källor stöds endast för npm-paket.

Åsidosätta paket från överordnade källor

När överordnade källor är aktiverade i feeden kan du inte publicera en paketversion som redan finns i någon av dessa överordnade källor. Om NuGet.org överordnad är aktiverad kan du till exempel inte publicera Newtonsoft.Json 10.0.3 i feeden, eftersom den versionen redan är tillgänglig på NuGet.org.

Så här åsidosätter du en paketversion från en uppströmskälla:

  1. Inaktivera relevant uppströmskälla.

  2. Publicera önskad paketversion i feeden.

  3. Återaktivera den överordnade källan.

Det här arbetsflödet säkerställer att du kan publicera den önskade versionen samtidigt som integriteten hos dina överordnade källor bibehålls.

Notering / Anteckning

Paketversioner är oföränderliga. Sparade paket finns kvar i feeden även om den överordnade källan är inaktiverad eller borttagen.

Hälsostatus för överordnade källor

Om en feed har en feluppströmskälla kan metadata för paket som använder samma protokoll inte längre uppdateras. Följ dessa steg för att kontrollera hälsostatusen för dina överordnade källor:

  1. Logga in på din Azure DevOps-organisation och navigera till projektet.

  2. Välj Artefakter och välj sedan din feed på den nedrullningsbara menyn.

  3. Välj kugghjulsikonen för att öppna Feed-inställningar, sedan väljer du Uppströmskällor.

    En skärmbild som visar de överordnade källornas senaste synkroniseringsstatus.

  4. Om det uppstår fel visas ett varningsmeddelande. Välj statusen Misslyckades för att visa detaljerad information, inklusive orsaken till felet och stegen för att lösa det.

    En skärmbild som visar information om synkroniseringsfelet.

Notering / Anteckning

För offentliga register som NuGet.org finns det vanligtvis en fördröjning på 3–6 timmar mellan när ett paket skickas till det offentliga registret och när det blir tillgängligt för nedladdning. Den här fördröjningen beror på jobbtid och dataspridning. Men när den överordnade källan är en Azure Artifacts-feed är svarstiden vanligtvis inte mer än några minuter.