Sdílet prostřednictvím


Konfigurace upstreamového chování

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

Díky upstreamovým zdrojům Azure Artifacts získají vývojáři výhodu využívání jednotného informačního kanálu k publikování a využívání balíčků z informačních kanálů Artifact a oblíbených veřejných registrů, jako jsou NuGet.org nebo npmjs.com. Dříve informační kanály Artifact zkombinovaly seznam dostupných verzí balíčků ze samotného informačního kanálu i ze všech nakonfigurovaných upstreamových zdrojů.

Obrázek znázorňující obsah informačního kanálu

Upstreamové chování je funkce, která vývojářům umožňuje zvolit, jestli chtějí využívat externě zdrojové verze balíčků. Určuje, které balíčky jsou přístupné z veřejných registrů pro konkrétní balíčky.

Po povolení upstreamového chování se při publikování balíčku do informačního kanálu Azure Artifacts zablokuje jakákoli verze z veřejného registru a nebude dostupná ke stažení.

Tento přístup přidává další vrstvu zabezpečení tím, že brání potenciálnímu ohrožení škodlivých balíčků, které mohly infiltrovat veřejné registry.

Uživatelé ale stále můžou deaktivovat nastavení chování upstreamu, což jim umožní využívat balíčky z veřejných registrů, pokud to raději dělají.

Poznámka:

Nové chování nebude mít vliv na žádné aktuálně používané verze balíčků, protože se zachovají v zobrazení @local informačního kanálu.

Použitelné scénáře

Následující část ukazuje různé běžné scénáře, kdy se nadřazené chování aktivuje k blokování externě zdrojových verzí balíčků a dalších scénářů, kdy není potřeba blokovat přístup k veřejným balíčkům.

Veřejné verze jsou blokované.

Veřejná verze privátního balíčku

V tomto scénáři má tým privátní balíček, který byl zpřístupněn jako veřejný. V tomto případě se aktivuje upstreamové chování, které zablokuje všechny nové veřejné verze (nedůvěryhodné balíčky).

Obrázek znázorňující verzi interního balíčku, která se zpřístupnila

Používání privátních i veřejných balíčků

Pokud v tomto scénáři tým používá kombinaci privátních a veřejných balíčků, povolení nadřazeného chování blokuje všechny nové verze balíčků z veřejného registru.

Obrázek znázorňující dostupné privátní a veřejné balíčky

Veřejné verze nebudou blokované.

Všechny balíčky jsou soukromé*

Pokud jsou všechny existující balíčky soukromé a tým nemá v úmyslu používat žádné veřejné balíčky, nové nadřazené chování nemá v tomto scénáři žádný vliv na pracovní postup týmu.

Obrázek znázorňující informační kanál s pouze privátními balíčky

Všechny balíčky jsou veřejné.

Pokud v tomto scénáři tým výhradně využívá veřejné balíčky, ať už z veřejného registru nebo jiných opensourcových úložišť, nové upstreamové chování nijak neovlivní svůj pracovní postup.

Obrázek znázorňující informační kanál pouze s veřejnými balíčky

Veřejný balíček vytvořený jako soukromý

V takovém případě, když je veřejný balíček převeden na privátní balíček, nové upstreamové chování nijak neovlivní pracovní postup týmu.

Obrázek znázorňující balíček převedený z veřejného na privátní

Povolit externí verze

Poznámka:

Pokud chcete povolit externě zdrojové verze, musíte být vlastníkem informačního kanálu. Další informace najdete v tématu Oprávnění informačního kanálu.

  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. Vyberte balíček a pak výběrem tlačítka se třemi tečky zobrazíte další možnosti. Vyberte Povolit externě zdrojové verze.

    Snímek obrazovky znázorňující, jak povolit externě zdrojové verze

  4. Výběrem přepínače povolte externí verze. Až budete hotovi, vyberte Zavřít .

    Snímek obrazovky znázorňující povolení externích verzí

Povolení externích verzí pomocí rozhraní REST API

Povolení externích verzí pomocí PowerShellu

  1. Vytvořte osobní přístupový token pomocí oprávnění Ke čtení, zápisu a správě balíčků>.

    Snímek obrazovky znázorňující, jak vybrat oprávnění k balení

  2. Vytvořte proměnnou prostředí pro váš osobní přístupový token.

    $env:PATVAR = "YOUR_PERSONAL_ACCESS_TOKEN"
    
  3. Převeďte svůj osobní přístupový token na řetězec kódovaný v baser64 a vytvořte hlavičku požadavku HTTP.

    $token = [Convert]::ToBase64String(([Text.Encoding]::ASCII.GetBytes("username:$env:PatVar")))
    $headers = @{
        Authorization = "Basic $token"
    }
    
  4. Vytvořte adresu URL koncového bodu. Příklad: //pkgs.dev.azure.com/MyOrg/MyProject/_apis/packaging/feeds/MyFeed/nuget/packages/pkg1.0.0.nupkg/upstreaming?api-version=6.1-preview.1

    • Informační kanál s oborem projektu:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
      
    • Informační kanál s oborem organizace:

      $url = "https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_apis/packaging/feeds/<FEED_NAME>/<PROTOCOL>/packages/<PACKAGE_NAME>/upstreaming?api-version=6.1-preview.1"
      

Spuštěním následujícího příkazu načtěte stav upstreamového chování balíčku. $url a $headers jsou stejné proměnné, které jsme použili v předchozí části.

Invoke-RestMethod -Uri $url -Headers $headers