Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Azure Artifacts consente agli sviluppatori di gestire i pacchetti da varie origini, inclusi registri pubblici come npmjs.com e feed privati. Per eseguire l'autenticazione con Azure Artifacts, è necessario configurare il file di configurazione npm. Questo file contiene URL e credenziali del feed usati da npm, che offrono opzioni per personalizzare il comportamento del client npm, ad esempio la configurazione di proxy, la definizione dei percorsi predefiniti dei pacchetti o la configurazione di feed di pacchetti privati. Il file con estensione npmrc si trova in genere nella home directory dell'utente, ma può anche essere creato a livello di progetto per eseguire l'override delle impostazioni predefinite.
Azure Artifacts consiglia di usare due file di configurazione separati. Il primo è dedicato all'autenticazione con Azure Artifacts, mentre il secondo deve essere mantenuto in locale per archiviare le credenziali. Questo approccio consente di condividere il file di configurazione mantenendo al tempo stesso le credenziali protette.
Per configurare il secondo file, è sufficiente inserirlo nella home directory nel computer di sviluppo e includere tutte le credenziali del Registro di sistema. In questo modo il client npm può accedere facilmente alle credenziali per l'autenticazione.
La procedura seguente illustra come configurare il primo file di configurazione:
Nota
vsts-npm-auth non è supportato in Azure DevOps Server.
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Selezionare Artefatti e quindi Connetti al feed.
Selezionare npm dalla barra laterale sinistra. Se questa è la prima volta che si usa Azure Artifacts con npm, assicurarsi di aver installato i prerequisiti.
Seguire le istruzioni nella sezione Configurazione del progetto per connettersi al feed.
Aggiungere un file con estensione npmrc nella directory del progetto, nella stessa directory del file package.json e incollarvi il frammento di codice seguente.
Copiare il frammento di codice seguente e incollarlo nel file npmrc a livello di utente:
Feed con ambito organizzazione:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:username=[ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed con ambito progetto:
; begin auth token
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti.
Eseguire il comando seguente in una finestra del prompt dei comandi e quindi incollare il token di accesso personale quando richiesto. Al termine, copiare il valore con codifica Base 64 generato.
Se si usa Linux/Mac, in alternativa è possibile usare il comando seguente per convertire il token di accesso personale in Base 64. Copiare il valore con codifica Base64 risultante.
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64
Sostituire i segnaposto [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] nel file con estensione npmrc utente con il token di accesso personale codificato ottenuto dal passaggio precedente.
Accedere alla raccolta di Azure DevOps e quindi passare al progetto.
Selezionare Artefatti e quindi Connetti al feed.
Selezionare npm dalla barra laterale sinistra e quindi seguire le istruzioni nella sezione Configurazione progetto per configurare il file di configurazione.
Aggiungere un file con estensione npmrc nella directory del progetto, nella stessa directory del file package.json e incollarvi il frammento di codice seguente.
Copiare il frammento di codice seguente e incollarlo nel file npmrc a livello di utente:
Feed con ambito raccolta:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed con ambito progetto:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti.
Eseguire il comando seguente in una finestra del prompt dei comandi e quindi incollare il token di accesso personale quando richiesto. Al termine, copiare il valore con codifica Base 64 generato.
Sostituire i segnaposto [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] nel file con estensione npmrc utente con il token di accesso personale codificato ottenuto dal passaggio precedente.
Accedere alla raccolta di Azure DevOps e quindi passare al progetto.
Selezionare Artefatti e quindi Selezionare Connetti al feed.
Selezionare npm a sinistra e quindi seguire le istruzioni in Installazione di Project per configurare il file di configurazione.
Aggiungere un file con estensione npmrc nella directory del progetto, nella stessa directory del file package.json e incollarvi il frammento di codice seguente:
Copiare il frammento di codice seguente e incollarlo nel file npmrc a livello di utente:
Feed con ambito raccolta:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:username=DefaultCollection
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Feed con ambito progetto:
; begin auth token
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/:email=npm requires email to be set but doesn't use the value
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:username=[ENTER_ANY_VALUE_BUT_NOT_AN_EMPTY_STRING]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:_password=[BASE64_ENCODED_PERSONAL_ACCESS_TOKEN]
//<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/:email=npm requires email to be set but doesn't use the value
; end auth token
Generare un token di accesso personale con ambiti di lettura e scrittura per la creazione di pacchetti.
Eseguire il comando seguente in una finestra del prompt dei comandi e quindi incollare il token di accesso personale quando richiesto. Al termine, copiare il valore con codifica Base 64 generato.
Sostituire i segnaposto [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] nel file con estensione npmrc utente con il token di accesso personale codificato ottenuto dal passaggio precedente.
Accedere alla raccolta di Azure DevOps e quindi passare al progetto.
Selezionare Artefatti e quindi Selezionare Connetti al feed.
Verrà visualizzata una nuova finestra. Nel riquadro di spostamento a sinistra selezionare npm.
Seguire le istruzioni fornite per configurare i file con estensione npmrc del progetto e dell'utente .
Suggerimento
L'uso di più registri nei file con estensione npmrc è supportato con ambiti e origini upstream.
Autenticazione della pipeline
Per eseguire l'autenticazione con la pipeline, Azure Artifacts consiglia di usare l'attività di autenticazione npm.
Quando si usano strumenti di esecuzione attività come gulp o Grunt, è necessario definire la priorità impostando l'attività di autenticazione npm all'inizio della pipeline. Questo passaggio garantisce che le credenziali vengano inserite nel file con estensione npmrc del progetto e mantenute durante l'esecuzione della pipeline, consentendo ai passaggi successivi di accedere alle credenziali nel file di configurazione.
Passare al progetto, selezionare Pipeline e quindi selezionare la definizione della pipeline.
Selezionare Modifica per modificare la pipeline.
Selezionare + questa opzione per aggiungere una nuova attività alla pipeline.
Passare al progetto, selezionare Pipeline compilazioni> e quindi selezionare la definizione di compilazione.
Selezionare Modifica per modificare la pipeline di compilazione.
Selezionare questa opzione + per aggiungere una nuova attività alla pipeline di compilazione.
Cercare l'attività npm Authenticate e quindi selezionare Aggiungi.
Selezionare il file con estensione npmrc e quindi selezionare Salva e coda al termine.
- task: npmAuthenticate@0
inputs:
workingFile: .npmrc ## Path to the npmrc file
customEndpoint: #Optional ## Comma-separated list of npm service connection names for registries from external organizations. For registries in your org, leave this blank
Nota
Per accedere al feed dalla pipeline, assicurarsi che il ruolo del servizio di compilazione sia impostato su Feed e lettore upstream (collaboratore) nelle impostazioni>del feed Autorizzazioni.
Nota
Se l'organizzazione usa un firewall o un server proxy, assicurarsi di consentire gli URL di dominio appropriati. Per informazioni dettagliate, vedere Indirizzi IP consentiti e URL di dominio.
Risoluzione dei problemi
vsts-npm-auth non è riconosciuto
Questo errore indica che la cartella npm modules non è stata aggiunta al percorso. Eseguire di nuovo l'installazione Node.js e assicurarsi di selezionare l'opzione Add to PATH . In alternativa, è possibile aggiungere la cartella npm modules al percorso modificando la variabile PATH in %APPDATA%\npm nel prompt dei comandi o $env:APPDATA\npm in PowerShell.
Impossibile eseguire l'autenticazione
Errore: codice E401 npm ERR! Impossibile eseguire l'autenticazione:> - Eseguire il comando con il vsts-npm-auth flag -F per ripetere l'autenticazione:
vsts-npm-auth -config .npmrc -F
Reimpostare vsts-npm-auth
Seguire questa procedura per reimpostare le credenziali vsts-npm-auth:
Se si verifica un errore 403, potrebbe indicare un conflitto di nomi. In Azure Artifacts i pacchetti non sono modificabili, ovvero dopo la pubblicazione di un pacchetto nel feed, il numero di versione è riservato in modo permanente. Anche se lo si elimina, non è possibile pubblicare un nuovo pacchetto con lo stesso numero di versione. Per risolvere questo problema, aggiornare la versione del pacchetto nel file package.json e quindi riprovare.