Condividi tramite


Che cosa sono le fonti a monte?

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

Le origini upstream di Azure Artifacts consentono agli sviluppatori di archiviare facilmente i pacchetti da varie origini in un singolo feed, inclusi quelli che si pubblicano e quelli installati da feed esterni o registri pubblici, ad esempio NuGet.org, npmjs.com. Una volta abilitate le origini upstream, tutti i pacchetti installati da un'origine upstream vengono salvati automaticamente nel feed.

Nota

Per salvare i pacchetti dagli upstream, è necessario avere il ruolo Feed e Lettore Upstream (Collaboratore) o superiore. Per altri dettagli, vedere Gestire le autorizzazioni .

Perché usare le origini upstream?

L'abilitazione delle origini upstream offre diversi vantaggi per la gestione delle dipendenze del prodotto all'interno di un singolo feed:

  • semplicità: l'archiviazione di tutti i pacchetti in un singolo feed semplifica i file di configurazione come NuGet.config, npmrc o settings.xml. Con un solo feed nel file di configurazione, è possibile ridurre le probabilità di errori e semplificare la configurazione.

  • compilazioni coerenti: il feed risolve le richieste dei pacchetti in un ordine definito, garantendo compilazioni più prevedibili e affidabili.

  • l'integrità del pacchetto: il feed mantiene i metadati sui pacchetti salvati da origini upstream, consentendo di verificarne l'autenticità e assicurarsi di usare le versioni originali, non le copie o le versioni potenzialmente dannose.

  • affidabilità: i pacchetti installati da origini upstream vengono salvati automaticamente nel feed. In questo modo si garantisce l'accesso continuo anche se l'origine upstream non è più disponibile a causa di manutenzione o altri problemi, in modo da poter continuare a sviluppare e creare con sicurezza.

Procedure consigliate per i consumer di pacchetti

Per sfruttare appieno i vantaggi delle sorgenti upstream come utilizzatore di pacchetti, segui queste procedure consigliate:

1. Usare un singolo feed nel file di configurazione

Per consentire al feed di fornire un ripristino deterministico , assicurarsi che il file di configurazione (ad esempio nuget.config o npmrc) faccia riferimento a un solo feed con origini upstream abilitate.

  • Esempi:

    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>
    

    Nota

    NuGet compila diversi file di configurazione per determinare il set completo di opzioni da applicare. L'uso di <clear /> garantisce che tutte le altre origini del pacchetto specificate nei file di configurazione di livello superiore vengano ignorate.

2. Ordina intenzionalmente le origini upstream

Se si usano solo registri pubblici come NuGet.org o npmjs.com, l'ordine delle origini upstream non è rilevante. Le richieste al feed seguono la sequenza descritta nella sezione ordine di ricerca.

Tuttavia, quando si gestiscono più origini, ad esempio una combinazione di feed e registri pubblici, ogni origine upstream viene eseguita nella ricerca nell'ordine definito nelle impostazioni di configurazione del feed. In questo caso, è consigliabile inserire prima i registri pubblici nell'elenco delle origini upstream.

In alcuni scenari univoci, alcune organizzazioni modificano pacchetti di software open source (OSS) per risolvere i problemi di sicurezza, migliorare le funzionalità o soddisfare requisiti interni specifici che richiedono la ricompilazione interna del pacchetto anziché ottenerlo direttamente da un repository pubblico. Se la tua organizzazione segue questa procedura, posiziona la fonte sorgente upstream contenente questi pacchetti OSS personalizzati prima di altri registri pubblici. In questo modo, le versioni personalizzate vengono usate anziché quelle pubbliche.

Procedure consigliate per i proprietari dei feed e gli editori di pacchetti

Per assicurarsi che il feed possa essere facilmente configurato come origine upstream, seguire queste procedure consigliate:

1. Utilizzare la visualizzazione predefinita

La visualizzazione predefinita per tutti i feed appena creati è @Local, che contiene tutti i pacchetti pubblicati nel feed, nonché i pacchetti salvati da origini upstream.

Se si desidera usare altre visualizzazioni, ad esempio una visualizzazione per le versioni dei pacchetti appena rilasciate, è possibile alzare di livello i pacchetti alla visualizzazione @Release e quindi renderla disponibile per i consumer di destinazione. Per ulteriori dettagli, vedere visualizzazioni feed.

2. Costruire un grafico del pacchetto

Per costruire un grafo del pacchetto, è sufficiente connettersi alla visualizzazione predefinita del feed e installare il pacchetto che si vuole condividere. Una volta salvato un pacchetto nella visualizzazione predefinita, gli utenti che vogliono utilizzarlo potranno risolvere il grafico del pacchetto e installare la versione desiderata. I pacchetti provenienti da origini upstream vengono visualizzati in base alla visualizzazione configurata per l'origine upstream corrispondente. Per ulteriori dettagli, vedere Come gli upstream costruiscono il set di pacchetti disponibili.

Ordine di ricerca

Per i gestori di pacchetti pubblici che supportano più feed, ad esempio NuGet e Maven, l'ordine in cui i feed vengono sottoposti a query può talvolta non essere chiaro o non deterministico. Ad esempio, NuGet invia query parallele a tutti i feed nel file di configurazione ed elabora le risposte in modo fifo (first-in,first-out), che può causare risultati incoerenti.

Le origini upstream eliminano questa incertezza applicando un ordine di ricerca strutturato, eseguendo una ricerca nel feed e nelle relative origini upstream nell'ordine seguente:

  1. Pacchetti pubblicati direttamente nel feed.

  2. Pacchetti salvati da un'origine upstream.

  3. Pacchetti disponibili da origini a monte. Ogni origine upstream viene cercata nell'ordine in cui è elencata nella configurazione del feed.

Nota

Azure Artifacts non supporta la ricerca di pacchetti in origini upstream usando Esplora pacchetti NuGet in Visual Studio.

Salvare i pacchetti da origini upstream

Quando un'origine upstream è abilitata nel feed, Azure Artifacts salverà automaticamente una copia di qualsiasi pacchetto installato da un collaboratore o un utente di livello superiore dall'origine upstream.

Ad esempio, è possibile installare i pacchetti direttamente dall'origine upstream usando un comando come npm install express. In alternativa, i pacchetti potrebbero essere installati come parte di un processo di risoluzione delle dipendenze. In questo caso, l'installazione di express salverebbe anche le relative dipendenze, ad esempio accetta.

Le fonti upstream offrono una protezione importante per i consumatori e l'infrastruttura, proteggendoli da interruzioni impreviste. Se l'origine upstream riscontra tempi di inattività, manutenzione o diventa temporaneamente non disponibile, è comunque possibile recuperare i pacchetti necessari dal feed e continuare lo sviluppo.

Nota

Le origini upstream personalizzate sono supportate solo per i pacchetti npm.

Sovrascrivere i pacchetti dalle origini upstream

Quando si abilitano le origini upstream, tenere presente che non è possibile pubblicare una versione del pacchetto già esistente in un'origine upstream. Ad esempio, se si abilita il NuGet.org upstream, non sarà possibile pubblicare il pacchetto Newtonsoft.Json 10.0.3, perché tale versione è già disponibile in NuGet.org.

Se è necessario pubblicare una versione del pacchetto già esistente in una delle origini upstream, è necessario seguire questa procedura:

  1. Disabilitare l'origine upstream pertinente.

  2. Pubblica il pacchetto.

  3. Riabilitare la fonte upstream.

Questo processo garantisce che sia possibile pubblicare la versione desiderata mantenendo l'integrità delle origini upstream.

Nota

Le versioni del pacchetto non sono modificabili. I pacchetti salvati rimangono nel feed anche se l'origine upstream è disabilitata o rimossa.

Stato di integrità delle fonti upstream

Se un feed ha un'origine upstream con errori, i metadati per i pacchetti dello stesso protocollo non possono più essere aggiornati. Per controllare lo stato di integrità delle origini upstream, seguire questa procedura:

  1. Accedere all'organizzazione di Azure DevOps e passare al progetto.

  2. Seleziona Artefatti e quindi seleziona il tuo feed dal menu a discesa.

  3. Selezionare l'icona a forma di ingranaggio Icona a forma di ingranaggio per passare alle impostazioni del feed e quindi selezionare Origini upstream.

    Screenshot che mostra l'ultimo stato di sincronizzazione delle origini upstream.

  4. Se si verificano errori, verrà visualizzato un messaggio di avviso. Facendo clic sul stato Non riuscito vengono forniti dettagli aggiuntivi, tra cui la causa dell'errore e le istruzioni su come risolverlo.

    Screenshot che mostra i dettagli dell'errore di sincronizzazione.

Nota

Per i registri pubblici come NuGet.org, si verifica un ritardo di 3-6 ore tra il push di un pacchetto nel registro pubblico e quando diventa disponibile per il download. Questo ritardo dipende dalla tempistica del processo e dalla propagazione dei dati. Tuttavia, quando l'origine upstream è un feed di Azure Artifacts, la latenza è in genere non più di pochi minuti.

Domande frequenti

D: Non riesco a trovare il mio pacchetto anche se posso vederlo in uno dei miei feed di origine?

R: I pacchetti provenienti da origini upstream diventano disponibili nel feed downstream subito dopo la pubblicazione. Tuttavia, il pacchetto sarà visibile solo ai lettori dopo che è stato salvato nel feed. Un pacchetto viene salvato quando un utente con autorizzazioni di lettura feed e upstream (collaboratore) o superiore installa la versione nel feed downstream. Questo attiva il downstream per salvare una copia del pacchetto dall'upstream, dopodiché essa viene salvata permanentemente ed è disponibile nel downstream per tutti i lettori. Si tratta di quando la versione del pacchetto diventa visibile nella sezione versioni del pacchetto dell'interfaccia utente Web.

D: Che cosa sono le visualizzazioni feed?

R: Le visualizzazioni consentono agli sviluppatori di condividere in modo selettivo un subset di versioni del pacchetto testate e convalidate, escludendo eventuali pacchetti ancora in fase di sviluppo o che non soddisfano i criteri di qualità. Per altri dettagli, vedere Che cosa sono le visualizzazioni feed.

D: Non è possibile trovare il feed da configurare come origine upstream?

R: Assicurarsi che il proprietario del feed abbia condiviso una visualizzazione come origine upstream. Per ulteriori dettagli, vedere Aggiungere un feed in un'organizzazione diversa come origine upstream.

D: Un utente con il ruolo Feed Reader può scaricare pacchetti da un'origine upstream?

R: No. Un utente con il ruolo lettore di feed in un feed di Azure Artifacts può scaricare solo i pacchetti salvati nel feed. I pacchetti vengono salvati nel feed quando un feed di e un lettore upstream (collaboratore), feed publisher (collaboratore)o proprietario del feed installa tali pacchetti da upstream.

D: Cosa accade quando un utente elimina o annulla la pubblicazione di un pacchetto salvato da un'origine upstream?

R: Il pacchetto non è più disponibile per il download dal feed e il numero di versione è riservato in modo permanente. Inoltre, il pacchetto non verrà più salvato dall'origine upstream. Le versioni precedenti e successive del pacchetto rimarranno invariate.

D: Cosa accade quando un utente depreca un pacchetto salvato da un'origine upstream?

R: Quando un utente depreca un pacchetto, viene aggiunto un messaggio di avviso ai metadati del pacchetto. Questo avviso viene visualizzato ogni volta che il pacchetto viene visualizzato o installato dal feed.