Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020
Артефакты Azure позволяют разработчикам управлять пакетами из различных источников, включая общедоступные реестры, такие как npmjs.com и частные веб-каналы. Чтобы выполнить проверку подлинности с помощью Артефактов Azure, необходимо настроить файл конфигурации NPMRC . Этот файл хранит URL-адреса и учетные данные веб-канала, используемые npm, и позволяет настраивать поведение клиента, например настройку прокси-серверов, определение расположений пакетов по умолчанию или настройку доступа к частным веб-каналам.
NPMRC-файл обычно находится в домашнем каталоге пользователя, но также может быть создан на уровне проекта для переопределения параметров по умолчанию.
Необходимые условия
Подключитесь к ленте
Azure Artifacts рекомендует использовать два отдельных файла конфигурации NPMRC . Один из них должен быть сохранен локально для хранения ваших учетных данных, а другой — добавлен в ваш каталог проекта рядом с package.json, чтобы определить URL-адрес вашего фида. Такой подход позволяет делиться конфигурацией уровня проекта, не раскрывая конфиденциальную информацию.
Чтобы настроить файл учетных данных, создайте или обновите NPMRC-файл и включите все необходимые учетные данные реестра. Это позволяет клиенту npm легко получить доступ к учетным данным для проверки подлинности.
Ниже приведены инструкции по настройке файла конфигурации уровня проекта. Выберите вкладку, соответствующую вашей среде разработки:
Заметка
vsts-npm-auth
не поддерживается в Azure DevOps Server.
Войдите в организацию Azure DevOps и перейдите к проекту.
Выберите Артефакты и выберите ваш канал в раскрывающемся меню.
Выберите "Подключиться к каналу" и выберите npm в области навигации слева.
Добавьте npmrc в проект в том же каталоге, что и package.json , и вставьте предоставленный фрагмент из раздела установки Проекта в файл.
Выполните следующую команду, чтобы получить токен Azure Artifacts, добавленный в NPMRC-файл на уровне пользователя. Нет необходимости запускать это каждый раз — npm вернёт ошибку 401 Unauthorized, когда придёт время обновить маркер.
vsts-npm-auth -config .npmrc
Войдите в организацию Azure DevOps и перейдите к проекту.
Выберите Артефакты и выберите ваш канал в раскрывающемся меню.
Выберите "Подключиться к каналу" и выберите npm в области навигации слева.
Добавьте npmrc-файл в каталог проекта. Это должен быть тот же каталог, в котором находится файл package.json .
Вставьте фрагмент кода, предоставленный в разделе настройка проекта, в ваш файл .npmrc. Файл должен выглядеть следующим образом:
registry=https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
Настройка учетных данных
Скопируйте следующий фрагмент кода и вставьте его в файл npmrc на уровне пользователя:
Веб-канал в рамках организации:
; 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
Лента проекта:
; 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
Создайте личный токен доступа с областями упаковки для чтения и записи.
Выполните следующую команду в окне командной строки. При появлении запроса вставьте персональный токен доступа (PAT) и нажмите клавишу ВВОД. Скрипт вернет версию PAT в кодировке Base64, скопируйте это значение, которое будет использоваться на следующем шаге.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
Если вы используете Linux или macOS, вы можете выполнить следующую команду в терминале, чтобы преобразовать личный маркер доступа (PAT) в строку в кодировке Base64. Скопируйте результирующее значение, которое будет использоваться на следующем шаге.
echo -n "YOUR_PERSONAL_ACCESS-TOKEN" | base64
Замените заполнители [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] в NPMRC-файле уровня пользователя на личные маркеры доступа в кодировке Base64, созданные на предыдущем шаге.
Войдите в коллекцию Azure DevOps и перейдите к проекту.
Выберите Артефакты, выберите ваш канал в раскрывающемся меню, а затем выберите "Подключиться к каналу".
Выберите npm слева и выполните действия, описанные в разделе "Настройка проекта ", чтобы настроить Npmrc. файл и выполните аутентификацию вашего канала.
Войдите в коллекцию Azure DevOps и перейдите к проекту.
Выберите Артефакты и выберите ваш канал в раскрывающемся меню.
Выберите "Подключиться к каналу" и выберите npm в области навигации слева.
Добавьте npmrc-файл в каталог проекта в том же каталоге, что и файл package.json , и вставьте фрагмент кода, указанный в разделе установки Проекта , в NPMRC-файл . Файл должен выглядеть следующим образом:
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
Настройка учетных данных
Скопируйте следующий фрагмент кода и вставьте его в файл NPM RC на уровне пользователя:
канал для коллекции:
; 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
Лента проекта:
; 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
Создайте личный токен доступа с областями упаковки для чтения и записи.
Выполните следующую команду в окне командной строки. При появлении запроса вставьте личный токен доступа и нажмите клавишу ВВОД. Скрипт вернет версию PAT в кодировке Base64, скопируйте это значение, которое будет использоваться на следующем шаге.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
Замените заполнители [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] в NPMRC-файле уровня пользователя на личные маркеры доступа в кодировке Base64, созданные на предыдущем шаге.
Войдите в коллекцию Azure DevOps и перейдите к проекту.
Выберите артефакты, и затем выберите Подключиться к каналу.
Выберите npm слева и выполните действия, описанные в разделе "Настройка проекта ", чтобы настроить Npmrc. Отправьте файл и авторизуйтесь с помощью вашего веб-канала.
Войдите в коллекцию Azure DevOps и перейдите к проекту.
Выберите Артефакты и выберите ваш канал в раскрывающемся меню.
Выберите "Подключиться к каналу" и выберите npm в области навигации слева.
Добавьте npmrc-файл в каталог проекта в том же каталоге, что и файл package.json , и вставьте фрагмент кода, указанный в разделе установки Проекта , в NPMRC-файл . Файл должен выглядеть следующим образом:
registry=http://<SERVER_NAME>/<COLLECTION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/npm/registry/
always-auth=true
Заметка
Для Debian, Ubuntu и других сообществ или корпоративных дистрибутивов, таких как Fedora или Redhat, убедитесь, что вы установили необходимые компоненты из репозитория дистрибутивов NodeSource.
Настройка учетных данных
Скопируйте следующий фрагмент кода и вставьте его в файл NPM RC на уровне пользователя:
канал для коллекции:
; 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
Лента проекта:
; 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
Создайте личный токен доступа с областями упаковки для чтения и записи.
Выполните следующую команду в окне командной строки. При появлении запроса вставьте личный токен доступа и нажмите ВВОД. Скрипт вернет версию PAT в кодировке Base64, скопируйте это значение, которое будет использоваться на следующем шаге.
node -e "require('readline') .createInterface({input:process.stdin,output:process.stdout,historySize:0}) .question('PAT> ',p => { b64=Buffer.from(p.trim()).toString('base64');console.log(b64);process.exit(); })"
Замените заполнители [BASE64_ENCODED_PERSONAL_ACCESS_TOKEN] в NPMRC-файле уровня пользователя на личные маркеры доступа в кодировке Base64, созданные на предыдущем шаге.
Связанный контент