Поделиться через


npmAuthenticate@0 — задача npm authenticate (для средств выполнения задач) v0

Используйте эту задачу, чтобы предоставить npm учетные .npmrc данные для файла в репозитории для области сборки. Это позволяет npm, а также npm средствам выполнения задач, таким как gulp и Grunt, проходить проверку подлинности в частных реестрах.

Синтаксис

# npm authenticate (for task runners) v0
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
  inputs:
    workingFile: # string. Required. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this organization/collection.
# npm Authenticate (for task runners) v0
# Don't use this task if you're also using the npm task. Provides npm credentials to an .npmrc file in your repository for the scope of the build. This enables npm task runners like Gulp and Grunt to authenticate with private registries.
- task: npmAuthenticate@0
  inputs:
    #workingFile: # string. .npmrc file to authenticate. 
    #customEndpoint: # string. Credentials for registries outside this account/collection.

Входные данные

workingFile - NPMRC-файл для проверки подлинности
string. Обязательный.

Путь к файлу .npmrc , который указывает реестры, с которыми вы хотите работать. Выберите файл, а не папку, например /packages/mypackage.npmrc.


workingFile - NPMRC-файл для проверки подлинности
string.

Путь к файлу .npmrc , который указывает реестры, с которыми вы хотите работать. Выберите файл, а не папку, например /packages/mypackage.npmrc.


customEndpoint - Учетные данные для реестров за пределами этой организации или коллекции
string.

Разделенный запятыми список имен подключений служб npm для реестров за пределами этой организации или коллекции. Указанный .npmrc файл должен содержать записи реестра, соответствующие подключениям к службам. Если вам нужны только реестры в этой организации или коллекции, оставьте это поле пустым. Учетные данные сборки используются автоматически.


customEndpoint - Учетные данные для реестров за пределами этой учетной записи или коллекции
string.

Разделенный запятыми список имен подключений служб npm для реестров за пределами этой организации или коллекции. Указанный .npmrc файл должен содержать записи реестра, соответствующие подключениям к службам. Если вам нужны только реестры в этой организации или коллекции, оставьте это поле пустым. Учетные данные сборки используются автоматически.


Параметры управления задачами

Все задачи имеют параметры управления в дополнение к входным данным задачи. Дополнительные сведения см. в разделе Параметры управления и общие свойства задачи.

Выходные переменные

Нет.

Remarks

Используйте эту задачу, чтобы предоставить npm учетные .npmrc данные для файла в репозитории для области сборки. Это позволяет npm, а также npm средствам выполнения задач, таким как gulp и Grunt, проходить проверку подлинности в частных реестрах.

Как работает эта задача?

Эта задача выполняет поиск записей реестра в указанном .npmrc файле, а затем добавляет сведения о проверке подлинности для обнаруженных реестров в конец файла. Для всех реестров в текущей организации или коллекции используются учетные данные сборки. Для реестров в другой организации или размещенных сторонней организацией URI реестра будут сравниваться с URI подключений службы npm , заданных customEndpoint входными данными, и будут использоваться соответствующие учетные данные. Файл .npmrc будет возвращен в исходное состояние в конце выполнения конвейера.

Когда в конвейере следует выполнять эту задачу?

Эта задача должна выполняться перед использованием npmили npm средства выполнения задач для установки или отправки пакетов в репозиторий npm, прошедший проверку подлинности, например Azure Artifacts. Другие требования к упорядочению отсутствуют.

У меня есть несколько проектов npm. Нужно ли выполнять эту задачу для каждого NPMRC-файла?

Эта задача будет добавлять сведения о проверке подлинности только в один .npmrc файл за раз. Если требуется проверка подлинности для нескольких .npmrc файлов, можно выполнить задачу несколько раз, по одному разу для каждого .npmrc файла. Кроме того, можно создать .npmrc файл, в котором указаны все реестры, используемые проектами, которые выполняются npmAuthenticate в этом .npmrc файле, а затем задать переменную среды, чтобы назначить этот .npmrc файл в качестве файла конфигурации npm для каждого пользователя.

- task: npmAuthenticate@0
  inputs:
    workingFile: $(agent.tempdirectory)/.npmrc
- script: echo ##vso[task.setvariable variable=NPM_CONFIG_USERCONFIG]$(agent.tempdirectory)/.npmrc
- script: npm ci
  workingDirectory: project1
- script: npm ci
  workingDirectory: project2

Мой агент находится за веб-прокси. Будет ли npmAuthenticate настроено npm/gulp/Grunt использование прокси-сервера?

Нет, не будут. Хотя сама эта задача будет работать за веб-прокси, для использования которого настроен агент, она не настраивает npm или npm средства выполнения задач для использования прокси-сервера.

Для этого можно сделать следующее:

  • Задайте переменные http_proxy/https_proxy среды и при no_proxy необходимости задайте параметры прокси-сервера. Дополнительные сведения см. в разделе npm config . Обратите внимание, что это часто используемые переменные, которые могут также использовать другиеnpm средства, не относящиеся к (например, curl).

  • Добавьте параметры прокси-сервера в конфигурацию npm вручную, используя набор конфигурации npm или задав переменные среды с NPM_CONFIG_префиксом .

    Внимание!
    npm Средства выполнения задач могут быть несовместимы со всеми методами конфигурации прокси-сервера, поддерживаемыми npm.

  • Укажите прокси-сервер с флагом командной строки при вызове npm.

    - script: npm ci --https-proxy $(agent.proxyurl)
    

Если прокси-сервер требует проверки подлинности, может потребоваться добавить дополнительный шаг сборки для создания URI прокси-сервера, прошедшего проверку подлинности.

- script: node -e "let u = url.parse(`$(agent.proxyurl)`); u.auth = `$(agent.proxyusername):$(agent.proxypassword)`; console.log(`##vso[task.setvariable variable=proxyAuthUri;issecret=true]` + url.format(u))"
- script: npm publish --https-proxy $(proxyAuthUri)

Моему конвейеру требуется доступ к веб-каналу в другом проекте

Если конвейер выполняется в проекте, отличном от проекта, в котором размещен веб-канал, необходимо настроить другой проект, чтобы предоставить доступ на чтение и запись к службе сборки. Дополнительные сведения см. в статье Разрешения пакета в Azure Pipelines .

Примеры

Восстановление npm пакетов для проекта из реестра в организации

Если используются только реестры Azure Artifacts в вашей организации, необходимо только указать путь к .npmrc файлу npmAuthenticate задачи.

.npmrc

registry=https://pkgs.dev.azure.com/{organization}/_packaging/{feed}/npm/registry/
always-auth=true

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
- script: npm ci
# ...
- script: npm publish

Восстановление и публикация npm пакетов за пределами организации

Если вы .npmrc содержите реестры Azure Artifacts из другой организации или использует сторонний репозиторий пакетов, прошедших проверку подлинности, необходимо настроить подключения службы npm и указать их во customEndpoint входных данных. Реестры в организации Azure Artifacts также будут автоматически проходить проверку подлинности.

.npmrc

registry=https://pkgs.dev.azure.com/{organization}/{project}/_packaging/{feed}/npm/registry/
@{scope}:registry=https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/
@{otherscope}:registry=https://{thirdPartyRepository}/npm/registry/
always-auth=true

URL-адрес реестра, указывающий на веб-канал Azure Artifacts, может содержать или не содержать проект. URL-адрес веб-канала с областью проекта должен содержать проект, а URL-адрес веб-канала с областью действия организации не должен содержать проект. Дополнительные сведения о веб-каналах с областью проекта.

npm

- task: npmAuthenticate@0
  inputs:
    workingFile: .npmrc
    customEndpoint: OtherOrganizationNpmConnection, ThirdPartyRepositoryNpmConnection
- script: npm ci
# ...
- script: npm publish -registry https://pkgs.dev.azure.com/{otherorganization}/_packaging/{feed}/npm/registry/

OtherOrganizationNpmConnection и ThirdPartyRepositoryNpmConnection — это имена подключений к службе npm , которые были настроены и авторизованы для использования в конвейере и имеют URL-адреса, соответствующие url-адресам в указанном .npmrc файле.

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка, классический выпуск
Выполняется в Агент, DeploymentGroup
Требования Нет
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 2.115.0 или более поздней версии
Категория задач Пакет