Připojení projektu npm do informačních kanálů Azure Artifacts
Článek
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Azure Artifacts umožňuje vývojářům publikovat a instalovat různé typy balíčků z informačních kanálů a veřejných registrů, jako je npmjs.com. Pokud se chcete ověřit pomocí Azure Artifacts, je potřeba nakonfigurovat konfigurační soubor npm.
Tento soubor obsahuje adresy URL informačního kanálu a přihlašovací údaje používané npm a nabízí možnosti přizpůsobení chování klienta npm, jako je nastavení proxy serverů, definování výchozích umístění balíčků nebo konfigurace kanálů privátních balíčků. Soubor .npmrc se obvykle nachází v domovském adresáři uživatele, ale lze ho vytvořit také na úrovni projektu a přepsat výchozí nastavení. Úpravou souboru .npmrc můžou uživatelé přizpůsobit své prostředí npm tak, aby vyhovovalo jejich konkrétním požadavkům.
Pro osvědčené postupy se doporučuje použít dva samostatné konfigurační soubory. První se používá k ověřování pomocí Azure Artifacts, zatímco druhý se ukládá místně a uchovává vaše přihlašovací údaje.
Pokud chcete nastavit druhý soubor, jednoduše ho umístěte do domovského adresáře na vývojovém počítači a zahrňte všechny přihlašovací údaje registru. Klient npm tak může snadno přistupovat k vašim přihlašovacím údajům pro ověřování, což vám umožní sdílet konfigurační soubor při zachování zabezpečení přihlašovacích údajů.
Následující kroky vás provedou nastavením prvního konfiguračního souboru:
Do souboru npmrc na úrovni uživatele zkopírujte následující fragment kódu:
Informační kanál s oborem organizace:
; 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
Informační kanál s oborem projektu:
; 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
Do souboru .npmrc na úrovni uživatele zkopírujte následující fragment kódu:
Informační kanál s vymezeným oborem kolekce:
; 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
Informační kanál s oborem projektu:
; 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
Do souboru .npmrc na úrovni uživatele zkopírujte následující fragment kódu:
Informační kanál s vymezeným oborem kolekce:
; 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
Informační kanál s oborem projektu:
; 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
K ověření pomocí kanálu azure Artifacts doporučuje použít úlohu ověření npm.
Při použití spouštěčů úloh, jako je gulp nebo Grunt, je důležité, abyste na začátku kanálu zahrnuli úlohu ověření npm. Tato akce zajistí, že se vaše přihlašovací údaje vloží do souboru .npmrc vašeho projektu a zachovají se během spuštění kanálu a umožní následným krokům získat přístup k přihlašovacím údajům v konfiguračním souboru.
Přejděte do projektu, vyberte Kanály a pak vyberte definici kanálu.
Vyberte Upravit a upravte kanál.
Vyberte + , pokud chcete do kanálu přidat novou úlohu.
Přejděte do projektu, vyberte Buildy> kanálů a pak vyberte definici sestavení.
Vyberte Upravit a upravte kanál buildu.
Vyberte + , pokud chcete do kanálu buildu přidat novou úlohu.
Vyhledejte úlohu npm Authenticate a pak vyberte Přidat.
Vyberte soubor .npmrc a po dokončení vyberte Uložit a frontu.
- 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
Poznámka:
Aby váš kanál přistupoval k vašemu kanálu, ujistěte se, že je role služby buildu v nastavení informačního kanálu nastavená na kanál a čtenář upstreamu (přispěvatel ).
Poznámka:
Pokud vaše organizace používá bránu firewall nebo proxy server, ujistěte se, že povolíte příslušné adresy URL domény. Podrobnosti najdete v tématu Povolené IP adresy a adresy URL domény.
Odstraňování potíží
Vsts-npm-auth se nerozpozná
Pokud během provádění projektu dojde k následující chybě:
Cmd: 'vsts-npm-auth' is not recognized as an internal or external command, operable program or batch file.
PowerShell: vsts-npm-auth : The term 'vsts-npm-auth' is not recognized as the name of a cmdlet, function, script file, or operable program.
Pak je pravděpodobné, že složka modulů npm nebyla přidána do vaší cesty. Pokud chcete tento postup vyřešit, spusťte znovu nastavení Node.js a nezapomeňte vybrat Add to PATH možnost.
Případně můžete do cesty přidat složku modulů npm úpravou proměnné PATH na %APPDATA%\npm příkazový řádek nebo $env:APPDATA\npm v PowerShellu.
Nejde ověřit
Pokud narazíte na chybu E401: code E401 npm ERR! Unable to authenticate. Spuštěním vsts-npm-auth příkazu s příznakem -F znovu proveďte ověření.
vsts-npm-auth -config .npmrc -F
Resetování ověřování vsts-npm-auth
Při resetování přihlašovacích údajů vsts-npm-auth postupujte takto:
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu: https://aka.ms/ContentUserFeedback.