Uppströmskällor för Azure Artifacts

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

Med hjälp av överordnade källor kan du enkelt lagra paket från olika källor i en enda feed. Detta inkluderar paket som du publicerar och de som du använder från externa feeds och offentliga register som NuGet.org, npmjs.com, Maven Central och PyPI. När du har aktiverat överordnade källor, alla paket som installeras från dessa överordnade källor, sparas en kopia automatiskt i feeden.

Kommentar

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 .

Fördelar

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

  • Enkelhet: När du publicerar alla dina paket i en enda feed förenklas dina konfigurationsfiler som NuGet.config, npmrc eller settings.xml. Med bara ett flöde i konfigurationsfilen minskar du risken för fel och buggar, vilket effektiviserar konfigurationen.

  • Determinism: ditt flöde löser paketbegäranden i ordning, vilket resulterar i mer konsekvens när du återskapar koden.

  • Proveniens: Ditt flöde behåller information om de paket som sparats från överordnade källor. På så sätt kan du kontrollera att du använder det ursprungliga paketet och inte en kopia eller en potentiellt skadlig version.

  • Sinnesfrid: Varje paket som installeras från överordnade källor sparas automatiskt i feeden. Det innebär att även om den överordnade källan har inaktiverats, tagits bort eller underhålls kan du fortsätta att utveckla och bygga med tillförsikt eftersom du har en kopia av paketet i flödet.

Metodtips – paketkonsumenter

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

Använd en enda feed i konfigurationsfilen:

Kontrollera att konfigurationsfilen, till exempel nuget.config eller .npmrc, bara refererar till en feed med uppströmskällorna aktiverade för att flödet ska kunna ge en deterministisk återställning. Se exemplet nedan:

<packageSources>
  <clear />
  <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>

Kommentar

NuGet kompilerar flera konfigurationsfiler för att fastställa den fullständiga uppsättningen alternativ som ska tillämpas. Med hjälp av <clear />kan du effektivt ignorera alla andra paketkällor som anges i konfigurationsfiler på högre nivå.

registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true

Beställ dina överordnade källor avsiktligt:

Om du uteslutande använder offentliga register som nuget.org eller npmjs.com är ordningen på dina överordnade källor irrelevant. Begäranden till feeden följer sekvensen som beskrivs i sökordningsavsnittet.

Men när du hanterar flera källor, som kan innehålla en kombination av feeds och offentliga register, genomsöks varje uppströmskälla i den ordning den anges 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 väljer vissa organisationer att anpassa OSS-paket (programvara med öppen källkod). Det kan handla om att åtgärda säkerhetsproblem, förbättra funktionaliteten eller uppfylla specifika 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 rekommenderar vi att du placerar den överordnade källan som innehåller dessa ändrade OSS-paket före de offentliga paketansvariga. Det här arrangemanget säkerställer användningen av organisationens anpassade versioner.

Använd den föreslagna standardvyn:

När du lägger till en fjärrfeed som en uppströmskälla måste du välja dess flödesvy. På så sätt kan de överordnade källorna konstruera en uppsättning tillgängliga paket. Mer information finns i Hur överordnade konstruerar uppsättningen tillgängliga paket .

Metodtips: feedägare/paketutgivare

Överväg att tillämpa följande metodtips för att se till att feeden enkelt konfigureras som en uppströmskälla:

Använd standardvyn:

Standardvyn för alla nyligen skapade feeds är @Local vyn, som innehåller alla paket som publicerats i feeden eller 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 paketet till @Release vyn och sedan göra den vyn tillgänglig för paketkonsumenterna.

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 paketet sparas i standardvyn kan användare som vill använda det lösa paketdiagrammet och installera önskat paket. Paket från överordnade källor visas baserat på den konfigurerade vyn för motsvarande överordnade källa.

Sökordning

För offentliga pakethanterare som stöder flera feeds som NuGet och Maven kan ordningen i vilken feeds efterfrågas ibland vara oklar eller icke-deterministisk. I NuGet skickas till exempel parallella frågor till alla feeds i konfigurationsfilen och svaren bearbetas på ett FIFO-sätt (first-in, first-out).

Överordnade källor hanterar det här icke-deterministiska beteendet 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.

För att dra full nytta av funktionen för snabb sökning rekommenderar vi att du endast inkluderar en feed i konfigurationsfilen.

Kommentar

Det går inte att söka efter paket i överordnade källor med Hjälp av NuGet-paketutforskaren.

Spara paket från överordnade källor

När du aktiverar överordnade källor för feeden och installerar ett paket från en uppströmskälla sparas en automatisk kopia av paketet i feeden. Den här metoden förbättrar nedladdningsprestandan och sparar nätverksbandbredd.

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 senare scenariot skulle installation av Express också spara dess beroenden, till exempel accepter.

Kommentar

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 är det viktigt att observera att det inte går att 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 exakta versionen redan finns i 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.

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 för att navigera till feedinställningarna och välj sedan Uppströmskällor.kugghjulsikon

    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 får du ytterligare information, inklusive orsaken till felet och instruktioner för hur du löser det.

    En skärmbild som visar information om synkroniseringsfelet.

Kommentar

När det gäller offentliga register som NuGet.org finns det en fördröjning på 3–6 timmar mellan den tid då 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.

Offlineuppströmskällor

Överordnade källor fungerar som ett värdefullt skydd för dina konsumenter och infrastruktur, vilket skyddar dem från oförutsedda avbrott. När du installerar ett paket från en uppströmskälla sparas en kopia av paketet i feeden. Om den överordnade källan drabbas av stilleståndstid, underhålls eller blir tillfälligt otillgänglig kan du fortfarande hämta de nödvändiga paketen från flödet och fortsätta utvecklingen.

Vanliga frågor och svar

F: Jag kan inte hitta mitt paket även om jag kan se det i en av feedens överordnade 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 utlöser nedströms för att spara en kopia av paketet från uppströms, varefter det sparas permanent och är tillgängligt i nedströms för alla läsare. 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 flödesvyer.

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

S: Kontrollera att feedens ägare delar en vy som en uppströmskälla.

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

S: Nej. En användare med rollen Feed Reader i en Azure Artifacts-feed kan bara ladda ned paket som har sparats i feeden. Paket sparas i feeden när en feed och uppströmsläsare (samarbetspartner), en feedutgivare (deltagare) eller en feedägare installerar dessa paket från uppströms.

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?

S: När en användare inaktuella ett paket läggs ett varningsmeddelande till i paketets metadata, som visas när paketet visas eller installeras från feeden.