Delen via


Wat zijn upstream-bronnen?

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

Met upstream-bronnen van Azure Artifacts kunnen ontwikkelaars pakketten van verschillende oorsprongen opslaan in één feed, inclusief pakketten die zijn gepubliceerd naar de feed en pakketten die zijn geïnstalleerd vanuit openbare registers, zoals NuGet.org of npmjs.com. Zodra upstream-bronnen zijn ingeschakeld, wordt elk pakket dat is geïnstalleerd vanuit een upstream-bron, automatisch opgeslagen in uw feed.

Notitie

Als u pakketten wilt opslaan vanuit upstreams, moet u de rol Feed en Upstream Reader (Samenwerker) of hoger hebben. Zie Feedrollen en -machtigingen voor meer informatie.

Waarom upstream-bronnen gebruiken?

Het inschakelen van upstream-bronnen biedt verschillende voordelen voor het beheren van de afhankelijkheden van uw product binnen één feed:

  • Eenvoud: het opslaan van al uw pakketten in één feed vereenvoudigt uw configuratiebestanden, zoals NuGet.config, npmrc of settings.xml. Met slechts één feed in uw configuratiebestand vermindert u de complexiteit van de installatie en minimaliseert u fouten.

  • Consistente builds: uw feed lost pakketaanvragen op in een gedefinieerde volgorde, waardoor voorspelbare en betrouwbare builds in verschillende omgevingen worden gegarandeerd.

  • pakketintegriteit: uw feed bewaart metagegevens over pakketten die zijn opgeslagen vanuit upstream-bronnen, zodat u de echtheid ervan kunt controleren en ervoor kunt zorgen dat u de oorspronkelijke versies gebruikt, geen kopieën of mogelijk schadelijke versies.

  • betrouwbaarheid: pakketten die zijn geïnstalleerd vanuit upstream-bronnen, worden automatisch opgeslagen in uw feed. Dit zorgt voor continue toegang, zelfs als de upstream-bron tijdelijk niet beschikbaar is vanwege onderhoud of andere problemen, zodat u met vertrouwen kunt blijven ontwikkelen en bouwen.

Aanbevolen procedures voor pakketgebruikers

Volg deze aanbevolen procedures om optimaal te profiteren van de voordelen van upstream-bronnen als pakketgebruiker:

Eén feed gebruiken in uw configuratiebestand

Om te zorgen voor een deterministische herstelactie door uw feed, zorg ervoor dat uw configuratiebestand (zoals nuget.config of npmrc) slechts naar één feed verwijst met ingeschakelde upstream-bronnen.

  • voorbeelden:

    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>
    

    Notitie

    NuGet compileert verschillende configuratiebestanden om de volledige set opties te bepalen die moeten worden toegepast. Het gebruik van <clear /> zorgt ervoor dat alle andere pakketbronnen die zijn opgegeven in configuratiebestanden op een hoger niveau worden genegeerd.

Uw upstream-bronnen opzettelijk bestellen

Als u alleen openbare registers gebruikt, zoals NuGet.org of npmjs.com, heeft de volgorde van upstream-bronnen geen invloed op gedrag. Aanvragen voor de feed volgen de volgorde die wordt beschreven in de sectie zoekvolgorde.

Wanneer u echter meerdere bronnen beheert, zoals een combinatie van feeds en openbare registers, wordt elke upstream-bron doorzocht in de volgorde die is gedefinieerd in de configuratie-instellingen van de feed. In dergelijke gevallen raden we u aan de openbare registers eerst in de lijst met upstream-bronnen te plaatsen.

In sommige unieke scenario's wijzigen sommige organisaties oss-pakketten (opensource-software) om beveiligingsproblemen aan te pakken, functionaliteit te verbeteren of te voldoen aan specifieke interne vereisten waarvoor het pakket intern moet worden opgebouwd in plaats van het rechtstreeks te verkrijgen vanuit een openbare opslagplaats. Als uw organisatie deze procedure volgt, plaatst u de upstream-bron met deze aangepaste OSS-pakketten vóór andere openbare registers. Dit zorgt ervoor dat uw aangepaste versies worden gebruikt in plaats van de openbare versies.

Aanbevolen procedures voor feedeigenaren en pakketuitgevers

Volg deze aanbevolen procedures om ervoor te zorgen dat uw feed eenvoudig kan worden geconfigureerd als een upstream-bron:

De standaardweergave gebruiken

Alle nieuw gemaakte feeds maken standaard gebruik van de @Local weergave. Deze weergave bevat:

  • Pakketten die rechtstreeks naar de feed zijn gepubliceerd.
  • Pakketten die zijn opgeslagen vanuit upstream-bronnen.

Als u andere weergaven wilt gebruiken, zoals een weergave voor nieuw uitgebrachte pakketversies, kunt u uw pakketten promoveren naar de @Release weergave en die weergave vervolgens beschikbaar maken voor uw doelgebruikers. Zie feed weergaven voor meer informatie.

Een pakketgrafiek maken

Als u een pakketgrafiek wilt maken, maakt u gewoon verbinding met de standaardweergave van de feed en installeert u het pakket dat u wilt delen. Zodra een pakket is opgeslagen in de standaardweergave, kunnen gebruikers die het pakket willen gebruiken, de pakketgrafiek oplossen en de gewenste versie installeren. Pakketten van upstream-bronnen worden weergegeven op basis van de geconfigureerde weergave voor de bijbehorende upstream-bron. Zie Hoe upstreams de set beschikbare pakketten samenstellen voor meer informatie.

Zoekvolgorde

Voor openbare pakketbeheerders die ondersteuning bieden voor meerdere feeds, zoals NuGet en Maven, kan de volgorde waarin feeds worden opgevraagd soms onduidelijk of niet-deterministisch zijn. NuGet verzendt bijvoorbeeld parallelle query's naar alle feeds in het configuratiebestand en verwerkt reacties op een FIFO-manier (first-in, first-out), wat kan leiden tot inconsistente resultaten.

Azure Artifacts upstream-bronnen elimineren deze onzekerheid door een gestructureerde zoekvolgorde af te dwingen door de feed en de upstream-bronnen in de volgende volgorde te doorzoeken:

  1. Pakketten die rechtstreeks naar de feed zijn gepubliceerd.

  2. Pakketten die zijn opgeslagen vanuit een upstream-bron.

  3. Pakketten die beschikbaar zijn vanuit upstream-bronnen. Elke upstream-bron wordt doorzocht in de volgorde waarin deze wordt vermeld in de configuratie van de feed.

Notitie

Azure Artifacts biedt geen ondersteuning voor het zoeken naar pakketten in upstream-bronnen met behulp van NuGet Package Explorer in Visual Studio.

Pakketten opslaan vanuit upstream-bronnen

Wanneer een upstream-bron is ingeschakeld voor uw feed, slaat Azure Artifacts automatisch een kopie op van een pakket dat is geïnstalleerd door een samenwerker of hoger vanuit die upstream-bron.

U kunt bijvoorbeeld pakketten rechtstreeks vanuit de upstream-bron installeren met behulp van een opdracht zoals npm install express. Pakketten kunnen ook worden geïnstalleerd als onderdeel van afhankelijkheidsoplossing, dus het installeren van Express slaat ook de afhankelijkheden op, zoals accepteren.

Upstream-bronnen bieden een kritieke beveiliging voor uw consumenten en infrastructuur. Als het openbare register downtime, onderhoud of tijdelijk niet meer beschikbaar is, kunt u nog steeds de benodigde pakketten ophalen uit uw feed en uw ontwikkeling voortzetten.

Notitie

Aangepaste upstream-bronnen worden alleen ondersteund voor npm-pakketten.

Pakketten van upstream-bronnen overschrijven

Wanneer upstream-bronnen zijn ingeschakeld in uw feed, kunt u geen pakketversie publiceren die al bestaat in een van deze upstream-bronnen. Als de NuGet.org upstream bijvoorbeeld is ingeschakeld, kunt u Newtonsoft.Json 10.0.3 niet publiceren naar uw feed, omdat die versie al beschikbaar is op NuGet.org.

Een pakketversie van een upstream-bron overschrijven:

  1. Schakel de relevante upstream-bron uit.

  2. Publiceer de gewenste pakketversie naar de feed.

  3. Schakel de upstream-bron opnieuw in.

Deze werkstroom zorgt ervoor dat u de gewenste versie kunt publiceren terwijl de integriteit van uw upstream-bronnen behouden blijft.

Notitie

Pakketversies zijn onveranderbaar. Opgeslagen pakketten blijven in de feed staan, zelfs als de upstream-bron is uitgeschakeld of verwijderd.

Gezondheidsstatus van upstreambronnen

Als een feed een mislukte upstream-bron heeft, kunnen metagegevens voor pakketten met hetzelfde protocol niet meer worden vernieuwd. Volg deze stappen om de status van uw upstream-bronnen te controleren:

  1. Meld u aan bij uw Azure DevOps-organisatie en navigeer naar uw project.

  2. Selecteer Artefactenen selecteer vervolgens uw feed in de vervolgkeuzelijst.

  3. Selecteer het tandwielpictogram om feedinstellingen te openen en selecteer vervolgens Upstream-bronnen.

    Een schermopname van de upstream-bronnen die de laatste synchronisatiestatus hebben.

  4. Als er fouten optreden, wordt er een waarschuwingsbericht weergegeven. Selecteer de status Mislukt om gedetailleerde informatie weer te geven, inclusief de oorzaak van de fout en de stappen om deze op te lossen.

    Een schermopname met details van de synchronisatiefout.

Notitie

Voor openbare registers, zoals NuGet.org, is er meestal een vertraging van 3 tot 6 uur tussen wanneer een pakket naar het openbare register wordt gepusht en wanneer het beschikbaar is voor downloaden. Deze vertraging is afhankelijk van het tijdstip van taken en gegevenspropagatie. Wanneer de upstream-bron echter een Azure Artifacts-feed is, is de latentie meestal niet langer dan een paar minuten.