Как я могу аутентифицировать реестр npm с помощью azure devops build pipe? - PullRequest
1 голос
/ 25 февраля 2020

У меня есть приложение, для которого я создаю конвейер сборки в Azure DevOps. Он использует npm пакеты, которые находятся в частном реестре npm (с кодом, созданным из другой организации Azure DevOps). Когда я запускаю npm ci (или npm install), происходит сбой со следующей ошибкой:

npm ERR! код E401

npm ERR! Невозможно подтвердить подлинность, необходимо: Bearer authorization_uri = https://login.windows.net/b2d01466-6e2c-4b55-8b90-e3ed41afca4a, Basi c realm = "https://pkgsproduks1.pkgs.visualstudio.com/", TFS-Federated

Специфические c пакеты, которые сбой - это ошибки из другой организации, которые возвращают 401 при попытке их получить.

Я подумал, что лучшая практика для аутентификации это было бы создать сервисное соединение в Azure DevOps. Я создал токен личного доступа в организации, в котором размещены пакеты npm, и использовал его для создания служебного соединения в организации, содержащей мой конвейер сборки. Затем я включил его в свой сборочный конвейер yaml следующим образом:

- task: Npm@1
  displayName: Install npm packages
  inputs:
    command: 'ci'
    workingDir: 'Path/To/Working/Directory'
    customEndpoint: 'Custom npm registry'

Я также пытался использовать шаг сборки npm authenticate до этого (как с customEndpoint: 'Custom npm registry' на этапе установки, так и без него) и хотя npm authenticate работает успешно, это не имеет никакого значения для ошибки, которую я получаю. Я также пытался настроить Service Connection, чтобы использовать мое имя пользователя и пароль, а не PAT, но это тоже не имело значения.

* * * * * * * * * * * * * * * * * * * .npmrc в моем проекте выглядит следующим образом (слегка изменено):

registry=https://registry.npmjs.org/
@{scope}:registry=https://pkgs.dev.azure.com/{organisation}/_packaging/{feedName}/npm/registry/
@{scope}:always-auth=true

Может кто-нибудь увидеть, что не так с аутентификацией, или ссылку на статью, в которой приведен пример этого в нескольких Azure организациях DevOps?

1 Ответ

0 голосов
/ 26 февраля 2020

.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
...