Upstreamové zdroje Azure Artifacts

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

Pomocí upstreamových zdrojů můžete pohodlně ukládat balíčky z různých zdrojů v jednom informačním kanálu. To zahrnuje balíčky, které publikujete, a ty, které využíváte z externích kanálů a veřejných registrů, jako jsou NuGet.org, npmjs.com, Maven Central a PyPI. Jakmile povolíte upstreamové zdroje, všechny balíčky nainstalované z těchto upstreamových zdrojů se do informačního kanálu automaticky uloží.

Poznámka:

Pokud chcete ukládat balíčky z upstreamů, musíte mít roli Feed and Upstream Reader (Spolupracovníci) nebo vyšší. Další podrobnosti najdete v tématu Správa oprávnění .

Výhody

Povolení upstreamových zdrojů nabízí několik výhod pro správu závislostí vašeho produktu v rámci jednoho informačního kanálu:

  • Jednoduchost: Při publikování všech balíčků do jednoho informačního kanálu to zjednodušuje konfigurační soubory, jako jsou NuGet.config, npmrc nebo settings.xml. S pouhým jedním informačním kanálem v konfiguračním souboru snížíte riziko chyb a chyb a zjednodušíte nastavení.

  • Determinismus: Váš informační kanál řeší požadavky na balíčky v pořadí, což vede k větší konzistenci při opětovném sestavení kódu.

  • Provenance: Informační kanál uchovává informace o balíčcích, které uložil z upstreamových zdrojů. To vám umožní ověřit, že používáte původní balíček, a ne kopii nebo potenciálně škodlivou verzi.

  • Klid: Každý balíček nainstalovaný z upstreamových zdrojů se automaticky uloží do vašeho informačního kanálu. To znamená, že i když je nadřazený zdroj zakázaný, odebraný nebo prochází údržbou, můžete pokračovat v vývoji a sestavování s jistotou, protože máte kopii tohoto balíčku ve svém informačním kanálu.

Osvědčené postupy – příjemci balíčků

Pokud chcete plně využít výhod upstreamových zdrojů jako příjemce balíčku, postupujte podle těchto osvědčených postupů:

V konfiguračním souboru použijte jeden informační kanál:

Aby informační kanál mohl poskytovat deterministické obnovení, ujistěte se, že konfigurační soubor, jako je nuget.config nebo .npmrc, odkazuje pouze na jeden informační kanál s povolenými upstreamovými zdroji. Viz následující příklad:

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

Poznámka:

NuGet zkompiluje několik konfiguračních souborů a určí úplnou sadu možností, které se mají použít. Pomocí <clear />příkazu můžete efektivně ignorovat všechny ostatní zdroje balíčků zadané v konfiguračních souborech vyšší úrovně.

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

Seřazení upstreamových zdrojů záměrně:

Pokud používáte výhradně veřejné registry, jako je nuget.org nebo npmjs.com, pořadí vašich upstreamových zdrojů je irelevantní. Požadavky na informační kanál se řídí sekvencí, která je podrobně popsána v části pořadí hledání.

Při správě více zdrojů, které můžou zahrnovat kombinaci informačních kanálů a veřejných registrů, se ale každý nadřazený zdroj prohledá v pořadí, ve kterém je uvedený v nastavení konfigurace informačního kanálu. V tomto případě doporučujeme umístit veřejné registry jako první do seznamu upstreamových zdrojů.

V některých jedinečných scénářích se některé organizace rozhodnou přizpůsobit balíčky opensourcového softwaru (OSS). To může zahrnovat řešení problémů se zabezpečením, vylepšení funkčnosti nebo splnění konkrétních požadavků, které vyžadují interní opětovné sestavení balíčku, a ne přímo z veřejného úložiště. Pokud vaše organizace tento postup dodržuje, doporučujeme umístit nadřazený zdroj obsahující tyto upravené balíčky operačního systému před správcem veřejných balíčků. Toto uspořádání zajišťuje použití přizpůsobených verzí vaší organizace.

Použijte navrhované výchozí zobrazení:

Když přidáte vzdálený kanál jako nadřazený zdroj, musíte vybrat zobrazení informačního kanálu. To umožňuje upstreamovým zdrojům vytvořit sadu dostupných balíčků. Další podrobnosti naleznete v tématu How upstreams construct the set of available packages for more details.

Osvědčené postupy: vlastníci informačních kanálů nebo vydavatelé balíčků

Pokud chcete zajistit, aby byl váš informační kanál snadno nakonfigurovaný jako nadřazený zdroj, zvažte použití následujících osvědčených postupů:

Použijte výchozí zobrazení:

Výchozí zobrazení pro všechny nově vytvořené informační kanály je @Local zobrazení, které obsahuje všechny balíčky publikované ve vašem informačním kanálu nebo uložené z nadřazených zdrojů.

Pokud chcete použít jiná zobrazení, například zobrazení pro nově vydané verze balíčků, můžete zvýšit úroveň balíčku do @Release zobrazení a pak toto zobrazení zpřístupnit příjemcům balíčků.

Vytvoření grafu balíčku:

Pokud chcete vytvořit graf balíčku, jednoduše se připojte k výchozímu zobrazení informačního kanálu a nainstalujte balíček, který chcete sdílet. Když se balíček uloží do výchozího zobrazení, uživatelé, kteří ho chtějí využívat, budou moct přeložit graf balíčku a nainstalovat požadovaný balíček. Balíčky z nadřazených zdrojů se zobrazují na základě nakonfigurovaného zobrazení pro odpovídající nadřazený zdroj.

Pořadí hledání

Pro správce veřejných balíčků, kteří podporují více informačních kanálů, jako je NuGet a Maven, může být pořadí, ve kterém jsou informační kanály dotazovány, někdy nejasné nebo nedeterministické. Například v NuGetu se paralelní dotazy odesílají do všech informačních kanálů v konfiguračním souboru a odpovědi se zpracovávají prvním způsobem (FIFO).

Upstreamové zdroje řeší toto ne deterministické chování vyhledáváním v informačním kanálu a jeho upstreamových zdrojích v následujícím pořadí:

  1. Balíčky, které byly publikovány přímo do informačního kanálu.

  2. Balíčky uložené z upstreamového zdroje

  3. Balíčky dostupné z upstreamových zdrojů Každý nadřazený zdroj se prohledá v pořadí, v jakém je uvedený v konfiguraci informačního kanálu.

Pokud chcete plně využít výhod funkce rychlého vyhledávání, doporučujeme do konfiguračního souboru zahrnout pouze jeden informační kanál.

Poznámka:

Vyhledávání balíčků v upstreamových zdrojích pomocí Průzkumníka balíčků NuGet se nepodporuje.

Ukládání balíčků z upstreamových zdrojů

Když povolíte upstreamové zdroje pro váš informační kanál a nainstalujete balíček z nadřazeného zdroje, uloží se do informačního kanálu automatická kopie tohoto balíčku. Tento postup zlepšuje výkon stahování a šetří šířku pásma sítě.

Balíčky můžete například nainstalovat přímo z upstreamového zdroje pomocí příkazu, jako je npm install express. Alternativně se balíčky můžou nainstalovat jako součást procesu řešení závislostí. V druhém scénáři by instalace expressu také uložila své závislosti, například akceptace.

Poznámka:

Vlastní upstreamové zdroje jsou podporovány pouze pro balíčky npm.

Přepsání balíčků z upstreamových zdrojů

Při povolování upstreamových zdrojů je důležité si uvědomit, že publikování verze balíčku, která již existuje v upstreamovém zdroji, nebude možné. Pokud například povolíte NuGet.org upstream, nebudete moct publikovat balíček Newtonsoft.Json 10.0.3 , protože tato přesná verze už v NuGet.org existuje.

Pokud potřebujete publikovat verzi balíčku, která už existuje v některém z upstreamových zdrojů, musíte postupovat takto:

  1. Zakažte příslušný nadřazený zdroj.
  2. Publikujte balíček.
  3. Znovu povolte nadřazený zdroj.

Poznámka:

Verze balíčků jsou neměnné. Uložené balíčky zůstanou v informačním kanálu i v případě, že je nadřazený zdroj zakázaný nebo odebraný.

Stav nadřazených zdrojů

Pokud kanál obsahuje neúspěšný nadřazený zdroj, metadata pro balíčky stejného protokolu se už nedají aktualizovat. Pokud chcete zkontrolovat stav upstreamových zdrojů, postupujte takto:

  1. Přihlaste se ke své organizaci Azure DevOps a přejděte k projektu.

  2. Vyberte Artefakty a pak v rozevírací nabídce vyberte svůj informační kanál.

  3. Výběrem ikony ikona ozubeného kola ozubeného kola přejděte do nastavení informačního kanálu a pak vyberte Nadřazené zdroje.

    Snímek obrazovky zobrazující stav poslední synchronizace nadřazených zdrojů

  4. Pokud dojde k nějakým selháním, zobrazí se zpráva s upozorněním. Kliknutím na stav Selhání zobrazíte další podrobnosti, včetně příčiny selhání a pokynů k jeho vyřešení.

    Snímek obrazovky zobrazující podrobnosti o selhání synchronizace

Poznámka:

V případě veřejných registrů, jako je NuGet.org, existuje 3 až 6hodinová prodleva mezi tím, než se balíček odešle do veřejného registru a kdy bude k dispozici ke stažení. Toto zpoždění závisí na načasování úlohy a šíření dat. Pokud je nadřazeným zdrojem informační kanál Azure Artifacts, latence obvykle není delší než několik minut.

Offline upstreamové zdroje

Upstreamové zdroje slouží jako cenná ochrana pro vaše uživatele a infrastrukturu a chrání je před nepředvídatelným výpadkem. Při instalaci balíčku z nadřazeného zdroje se do informačního kanálu uloží kopie tohoto balíčku. V případě výpadku nadřazeného zdroje, podstupují údržbu nebo jsou dočasně nedostupné, můžete z informačního kanálu načíst potřebné balíčky a pokračovat ve vývoji.

Nejčastější dotazy

Otázka: Nemůžu najít svůj balíček, i když ho vidím v jednom z upstreamů svého informačního kanálu?

Odpověď: Balíčky z upstreamových zdrojů budou brzy po publikování dostupné v podřízených kanálech. Balíček se ale bude zobrazovat jen čtenářům po uložení do informačního kanálu. Balíček se uloží, když uživatel s informačním kanálem a upstreamovým čtenářem (spolupracovníkem) nebo vyššími oprávněními nainstaluje verzi do podřízeného kanálu. Tím se aktivuje podřízená událost, aby uložila kopii balíčku z upstreamu, po které je trvale uložena a dostupná v podřízené poště pro všechny čtenáře. To je v případě, že se verze balíčku zobrazí v části verze balíčku webového uživatelského rozhraní.

Otázka: Co jsou zobrazení informačních kanálů?

A: Zobrazení umožňují vývojářům selektivně sdílet podmnožinu verzí balíčků, které byly testovány a ověřeny, s výjimkou všech balíčků, které jsou stále ve vývoji nebo které splňují kritéria kvality. Další informace naleznete v tématu Co jsou zobrazení informačních kanálů.

Otázka: Nemůžu najít informační kanál, který chci nakonfigurovat jako nadřazený zdroj?

A: Ujistěte se, že vlastník informačního kanálu sdílí zobrazení jako nadřazený zdroj.

Otázka: Může uživatel s rolí Čtenář informačního kanálu stahovat balíčky z nadřazeného zdroje?

Odpověď: Ne. Uživatel s rolí Čtenář informačního kanálu v informačním kanálu Azure Artifacts může stahovat pouze balíčky uložené do informačního kanálu. Balíčky se ukládají do informačního kanálu, když informační kanál a upstreamová čtečka (spolupracovníci), vydavatel informačního kanálu (přispěvatel) nebo vlastník informačního kanálu nainstalují tyto balíčky z upstreamu.

Otázka: Co se stane, když uživatel odstraní nebo zruší publikování balíčku uloženého z upstreamového zdroje?

A: Balíček přestane být k dispozici ke stažení z informačního kanálu a číslo verze je trvale rezervováno. Kromě toho se balíček už nebude ukládat z nadřazeného zdroje. Starší a novější verze balíčku zůstanou nedotčené.

Otázka: Co se stane, když uživatel přestane používat balíček uložený z nadřazeného zdroje?

A: Když uživatel přestane používat balíček, přidá se do metadat balíčku upozornění, která se zobrazí při každém zobrazení nebo instalaci balíčku z informačního kanálu.