Condividi tramite


Origini upstream di Azure Artifacts

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

Usando le origini upstream, è possibile archiviare facilmente i pacchetti da varie origini in un singolo feed. Sono inclusi i pacchetti pubblicati e quelli usati da feed esterni e registri pubblici, ad esempio NuGet.org, npmjs.com, Maven Central e PyPI. Dopo aver abilitato le origini upstream, tutti i pacchetti installati da queste origini upstream verranno salvati automaticamente nel feed.

Nota

Per salvare i pacchetti da upstream, è necessario avere il ruolo Feed e lettore upstream (collaboratore) o versione successiva. Per altri dettagli, vedere Gestire le autorizzazioni .

Vantaggi

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

  • Semplicità: quando si pubblicano tutti i pacchetti in un singolo feed, i file di configurazione vengono semplificati, ad esempio NuGet.config, npmrc o settings.xml. Con un solo feed nel file di configurazione, si riducono le probabilità di errori e bug, semplificando la configurazione.

  • Determinismo: il feed risolve le richieste di pacchetti in ordine, con conseguente maggiore coerenza durante la ricompilazione del codice.

  • Provenance: il feed mantiene le informazioni sui pacchetti salvati da origini upstream. In questo modo è possibile verificare di usare il pacchetto originale e non una copia o una versione potenzialmente dannosa.

  • Tranquillità: ogni pacchetto installato da origini upstream viene salvato automaticamente nel feed. Ciò significa che anche se l'origine upstream è disabilitata, rimossa o in fase di manutenzione, è possibile continuare a sviluppare e creare con sicurezza perché si dispone di una copia di tale pacchetto nel feed.

Procedure consigliate - Consumer di pacchetti

Per sfruttare appieno i vantaggi delle origini upstream come consumer di pacchetti, seguire queste procedure consigliate:

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 le origini upstream abilitate. Vedi l'esempio seguente:

<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. Usando <clear />, è possibile ignorare in modo efficace tutte le altre origini di pacchetto specificate nei file di configurazione di livello superiore.

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

Ordinare intenzionalmente le origini upstream:

Se si usano esclusivamente registri pubblici come nuget.org o npmjs.com, l'ordine delle origini upstream è irrilevante. Le richieste al feed seguono la sequenza dettagliata nella sezione dell'ordine di ricerca.

Tuttavia, quando si gestiscono più origini, che possono includere una combinazione di feed e registri pubblici, ogni origine upstream viene cercata nell'ordine in cui è elencata 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 scelgono di personalizzare pacchetti software open source (OSS). Ciò potrebbe comportare problemi di sicurezza, miglioramento delle funzionalità o soddisfare requisiti specifici che richiedono la ricompilazione interna del pacchetto invece di ottenerlo direttamente da un repository pubblico. Se l'organizzazione segue questa procedura, è consigliabile posizionare l'origine upstream contenente questi pacchetti OSS modificati prima dei gestori di pacchetti pubblici. Questa disposizione garantisce l'uso delle versioni personalizzate dell'organizzazione.

Usare la visualizzazione predefinita suggerita:

Quando si aggiunge un feed remoto come origine upstream, è necessario selezionare la visualizzazione del feed. Ciò consente alle origini upstream di costruire un set di pacchetti disponibili. Per altri dettagli, vedere Come costruire il set di pacchetti disponibili.

Procedure consigliate: proprietari di feed/autori di pacchetti

Per assicurarsi che il feed sia facilmente configurato come origine upstream, è consigliabile applicare le procedure consigliate seguenti:

Usare la visualizzazione predefinita:

La visualizzazione predefinita per tutti i feed appena creati è la @Local visualizzazione, che contiene tutti i pacchetti pubblicati nel feed o 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 il pacchetto alla @Release visualizzazione e quindi renderla disponibile per i consumer di pacchetti.

Creare un grafo del pacchetto:

Per costruire un grafo del pacchetto, è sufficiente connettersi alla visualizzazione predefinita del feed e installare il pacchetto che si vuole condividere. Quando il pacchetto viene salvato nella visualizzazione predefinita, gli utenti che vogliono utilizzarlo potranno risolvere il grafico del pacchetto e installare il pacchetto desiderato. I pacchetti provenienti da origini upstream vengono visualizzati in base alla visualizzazione configurata per l'origine upstream corrispondente.

Ordine di ricerca

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

Le origini upstream indirizzano questo comportamento non deterministico 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 upstream. Ogni origine upstream viene cercata nell'ordine in cui è elencata nella configurazione del feed.

Per sfruttare al meglio la funzionalità di ricerca rapida, è consigliabile includere un solo feed nel file di configurazione.

Nota

La ricerca di pacchetti in origini upstream con Esplora pacchetti NuGet non è supportata.

Salvare i pacchetti da origini upstream

Quando si abilitano le origini upstream per il feed e si installa un pacchetto da un'origine upstream, viene salvata una copia automatica del pacchetto nel feed. Questa procedura migliora le prestazioni di download e conserva la larghezza di banda di rete.

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 quest'ultimo scenario, l'installazione di Express salverebbe anche le relative dipendenze, ad esempio accetta.

Nota

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

Eseguire l'override dei pacchetti da origini upstream

Quando si abilitano le origini upstream, è importante notare che la pubblicazione di una versione del pacchetto già esistente in un'origine upstream non sarà possibile. Ad esempio, se si abilita il NuGet.org upstream, non sarà possibile pubblicare il pacchetto Newtonsoft.Json 10.0.3 , perché tale versione esatta esiste già in NuGet.org.

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

  1. Disabilitare l'origine upstream pertinente.
  2. Pubblicare il pacchetto.
  3. Riabilitare l'origine 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 origini 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. Selezionare Artefatti e quindi selezionare il 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 su Stato non riuscito verranno 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

Nel caso di registri pubblici come NuGet.org, si verifica un ritardo di 3-6 ore tra il momento in cui viene eseguito 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.

Origini upstream offline

Le fonti upstream fungono da preziose misure di sicurezza per i consumatori e l'infrastruttura, schermate da interruzioni impreviste. Quando si installa un pacchetto da un'origine upstream, nel feed viene salvata una copia del pacchetto. Se l'origine upstream riscontra tempi di inattività, viene sottoposta a manutenzione o diventa temporaneamente non disponibile, è comunque possibile recuperare i pacchetti necessari dal feed e continuare lo sviluppo.

Domande frequenti

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

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. In questo modo viene attivato il downstream per salvare una copia del pacchetto da upstream, dopo di che è stata salvata in modo permanente e disponibile nel downstream a 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 altre informazioni, 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 stia condividendo una visualizzazione come origine upstream.

D: Un utente con ruolo lettore feed può scaricare pacchetti da un'origine upstream?

R: No. Un utente con ruolo Lettore feed in un feed di Azure Artifacts può scaricare solo i pacchetti salvati nel feed. I pacchetti vengono salvati nel feed quando un feed e un lettore upstream (collaboratore), un autore di feed (collaboratore) o un proprietario del feed installano 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, che viene visualizzato ogni volta che il pacchetto viene visualizzato o installato dal feed.