Dela via


Vad är överordnade källor?

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

Azure Artifacts uppströmskällor gör det möjligt för utvecklare att enkelt lagra paket från olika källor i en enda feed, inklusive de som du publicerar och de som är installerade från externa feeds eller offentliga register som NuGet.org, 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 Hantera behörigheter .

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

Om du aktiverar överordnade källor får du 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 som NuGet.config, npmrc eller settings.xml. Med bara ett flöde i konfigurationsfilen minskar du risken för fel och effektiviserar konfigurationen.

  • Consistent Builds: Feeden löser paketbegäranden i en definierad ordning, vilket säkerställer mer förutsägbara och tillförlitliga byggprocesser.

  • 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 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:

1. Använd en enda feed i konfigurationsfilen

För att feeden ska kunna tillhandahålla en deterministisk återställningkontrollerar du att konfigurationsfilen (till exempel nuget.config eller npmrc) endast refererar till en feed med överordnade källor aktiverade.

  • 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>
    

    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.

2. Organisera dina upstreamkällor med avsikt

Om du bara använder offentliga register som NuGet.org eller npmjs.com spelar ordningen på dina överordnade källor ingen roll. 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 det här fallet 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 offentliga versioner.

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:

1. Använd standardvyn

Standardvyn för alla nyligen skapade feeds är @Local, som innehåller alla paket som publicerats i feeden samt 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.

2. Konstruera 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.

Överordnade källor eliminerar denna osäkerhet genom att framtvinga en strukturerad sökordning genom att söka i flödet 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.

Kommentar

Azure Artifacts stöder inte sökning efter paket i överordnade källor med Hjälp av 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 installeras av en medarbetare eller högre uppströms.

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 en beroendematchningsprocess. I det här fallet skulle installation av Express också spara dess beroenden, till exempel accepterar.

Överordnade källor ger ett viktigt skydd för dina konsumenter och infrastruktur, vilket skyddar dem från oväntade avbrott. Om den överordnade källan upplever stilleståndstid, underhåll eller blir tillfälligt otillgänglig kan du fortfarande hämta de nödvändiga paketen från feeden och fortsätta utvecklingen.

Anteckning

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

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

När du aktiverar överordnade källor bör du tänka på att du inte kan publicera en paketversion som redan finns i en uppströmskälla. Om du till exempel aktiverar NuGet.org uppströms kan du inte publicera Newtonsoft.Json 10.0.3--paketet eftersom den versionen redan är tillgänglig på NuGet.org.

Om du behöver publicera en paketversion som redan finns i någon av dina överordnade källor måste du följa dessa steg:

  1. Inaktivera relevant uppströmskälla.

  2. Publicera paketet.

  3. Återaktivera den överordnade källan.

Den här processen säkerställer att du kan publicera den önskade versionen samtidigt som integriteten för dina överordnade källor bibehålls.

Kommentar

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 med 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 sedan till projektet.

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

  3. Välj kugghjulsikonen kugghjulsikon för att navigera till dina Feed-inställningar, och 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. Om du klickar på statusen Misslyckades finns ytterligare information, inklusive orsaken till felet och instruktioner för hur du löser det.

    En skärmbild som visar information om synkroniseringsfelet.

Kommentar

För offentliga register som NuGet.org finns det 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.

Vanliga frågor och svar

F: Jag kan inte hitta mitt paket trots att jag kan se det i ett av mina feeds upstream-flöden?

S: Paket från överordnade källor blir tillgängliga i nedströmsflödet strax efter att de har publicerats. Paketet visas dock bara för läsarna när det har sparats i flödet. Ett paket sparas när en användare med Feed- och Upstream Reader (Kollaboratör) eller högre behörigheter installerar versionen i den underordnade feeden. Detta gör att systemet nedströms sparar en kopia av paketet från systemet uppströms, varefter det sparas permanent och blir tillgängligt för alla läsare i det nedströms systemet. Det här är när paketversionen visas i avsnittet paketversioner i webbgränssnittet.

F: Vad är flödesvyer?

S: Med vyer kan utvecklare selektivt dela en delmängd av paketversioner som har testats och verifierats, med undantag för paket som fortfarande är under utveckling eller som inte uppfyller kvalitetskriterierna. Mer information finns i Vad är feedvyer.

F: Jag kan inte hitta feeden som jag vill konfigurera som en uppströmskälla?

S: Kontrollera att feedens ägare har gjort en vy tillgänglig som uppströmskälla. Se Lägg till ett flöde i en annan organisation som en överordnad källa för mer information.

F: Kan en användare med rollen Feed Reader ladda ned paket från en uppströmskälla?

S: Nej. En användare med Feed Reader roll i en Azure Artifacts-feed kan bara ladda ned paket som har sparats i feeden. Paket sparas i feeden när en Feed och Upstream Reader (Kollaboratör), Feed Publisher (Bidragsgivare)eller Feed Owner installerar de paketen från uppströmsflöde.

F: Vad händer när en användare tar bort eller avpublicerar ett paket som sparats från en uppströmskälla?

S: Paketet blir inte tillgängligt för nedladdning från feeden och versionsnumret är permanent reserverat. Dessutom sparas inte längre paketet från den överordnade källan. Tidigare och senare versioner av paketet påverkas inte.

F: Vad händer när en användare föråldrade ett paket som sparats från en uppströmskälla?

När en användare markerar ett paket som inaktuellt läggs ett varningsmeddelande till i paketets metadata. Den här varningen visas när paketet visas eller installeras från feeden.