Ошибка при установке пакета, опубликованного в Azure DevOps NPM Artifacts в проекте другой организации

Я проверяю концепцию своей организации, используя конвейеры Azure DevOps для обработки наших клиентских сборок CI.

Я создал два проекта Angular: проект библиотеки и проект приложения, которое использует эту библиотеку. У каждого из них есть свой проект DevOps в моей Организации, у каждого из которых есть собственное репозиторий. (например, код библиотеки Angular находится в репозитории проекта My-Org / My-Library, а приложение, которое использует этот библиотека находится в репозитории My-Org / My-Application Project.)

Я успешно получил DevOps для публикации пакета этой библиотеки в его Артефактах. Я успешно установил этот пакет из Артефактов для своего приложения из интерфейса командной строки, используя npm install.

Когда я пытаюсь создать то же приложение с помощью конвейера Azure, все сначала выглядит хорошо, но затем я получаю предупреждения:

...
2020-09-25T01:40:22.9633584Z npm verb npm-session b9c6c5c07bc27d0f
2020-09-25T01:40:22.9634637Z npm info lifecycle @<myorganization>/<my-application-package-name>@0.0.0~preinstall: @<myorganization>/<my-application-package-name>@0.0.0
...
2020-09-25T01:40:22.9652940Z npm http fetch GET 200 https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz 888ms
2020-09-25T01:40:22.9653589Z npm http fetch GET 200 https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz 885ms
...
2020-09-25T01:40:22.9696448Z npm http fetch GET 200 https://registry.npmjs.org/tar/-/tar-6.0.5.tgz 256ms
2020-09-25T01:40:22.9697172Z npm WARN tar ENOENT: no such file or directory, open '/home/vsts/work/1/s/node_modules/.staging/source-map-655ef13e/dist/source-map.js'
2020-09-25T01:40:22.9697948Z npm http fetch GET 200 https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz 254ms
2020-09-25T01:40:22.9698728Z npm WARN tar ENOENT: no such file or directory, open '/home/vsts/work/1/s/node_modules/.staging/@angular/cli-095a8231/commands/build-impl.js'
2020-09-25T01:40:22.9699541Z npm WARN tar ENOENT: no such file or directory, open '/home/vsts/work/1/s/node_modules/.staging/engine.io-client-a00fe2c5/LICENSE'
...

завершается печальным финалом:

...
2020-09-25T01:40:23.9366311Z npm WARN tar ENOENT: no such file or directory, open '/home/vsts/work/1/s/node_modules/.staging/rxjs-77a83855/LICENSE.txt'
2020-09-25T01:40:23.9367111Z npm WARN tar ENOENT: no such file or directory, open '/home/vsts/work/1/s/node_modules/.staging/rxjs-77a83855/src/LICENSE.txt'
2020-09-25T01:40:23.9367879Z npm verb unlock done using /home/vsts/.npm/_locks/staging-b6ade8de5fa1f467.lock for /home/vsts/work/1/s/node_modules/.staging
2020-09-25T01:40:23.9369511Z npm verb stack Error: 404 Not Found - GET https://pkgs.dev.azure.com/<MyOrganization>/<My-Library-Project>/_packaging/<My-Library-Project-Artifact-Feed>/npm/registry/@<myorganization>/<my-library-package-name>/-/<my-library-package-name>-0.0.6.tgz
...
2020-09-25T01:40:23.9371625Z npm verb statusCode 404
2020-09-25T01:40:23.9372024Z npm verb pkgid @<myorganization>/<my-library-package-name>@0.0.6
2020-09-25T01:40:23.9372260Z npm verb cwd /home/vsts/work/1/s
2020-09-25T01:40:23.9372620Z npm verb Linux 5.4.0-1025-azure
2020-09-25T01:40:23.9373034Z npm verb argv "/opt/hostedtoolcache/node/12.18.4/x64/bin/node" "/opt/hostedtoolcache/node/12.18.4/x64/bin/npm" "install"
2020-09-25T01:40:23.9373392Z npm verb node v12.18.4
2020-09-25T01:40:23.9373573Z npm verb npm  v6.14.6
2020-09-25T01:40:23.9373749Z npm ERR! code E404
2020-09-25T01:40:23.9374536Z npm ERR! 404 Not Found - GET https://pkgs.dev.azure.com/<MyOrganization>/<My-Library-Project>/_packaging/<My-Library-Project-Artifact-Feed>/npm/registry/@<myorganization>/<my-library-package-name>/-/<my-library-package-name>-0.0.6.tgz
2020-09-25T01:40:23.9375074Z npm ERR! 404
2020-09-25T01:40:23.9375516Z npm ERR! 404  '@<myorganization>/<my-library-package-name>@0.0.6' is not in the npm registry.
...

Но вот что странно: если я нажимаю на этот URL-адрес в браузере, для которого конвейер сообщает об ошибке 404 ---_ 4 _---, браузер загружает мой пакет!

Итак, подведем итог:

  1. Выполняя npm install из командной строки для моего проекта приложения, я могу установить пакет из библиотеки DevOps Artifact s, и
  2. При нажатии на тот самый URL-адрес, который, как сообщает журнал конвейера приложения, дает сбой, браузер загружает пакет из артефактов библиотеки, но
  3. Конвейер приложения, работающий внутри моей Организации DevOps, не может его найти.

Я подозреваю, что это какие-то разрешения или проблема с авторизацией, но я не уверен, что делать дальше.

Я пробовал npmAuthenticate@0 задачу, и действительно, в журналах есть обнадеживающие вещи вроде:

2020-09-25T01:40:04.2511306Z ##[debug]Got auth token
..
2020-09-25T01:40:04.2540281Z ##[debug]Created webApi client for https://dev.azure.com/<MyOrganization>/; options: {"proxy":null,"allowRetries":true,"maxRetries":5,"ignoreSslError":false}
2020-09-25T01:40:04.2581233Z ##[debug]Getting URI for area ID <some GUID> from https://dev.azure.com/<MyOrganization>/
2020-09-25T01:40:04.3973124Z ##[debug]Found resource area with locationUrl: https://pkgs.dev.azure.com/<MyOrganization>/
2020-09-25T01:40:04.3976465Z ##[debug]Found serviceUri: https://pkgs.dev.azure.com/<MyOrganization>/
2020-09-25T01:40:04.3978178Z ##[debug]Getting credentials for local feeds
2020-09-25T01:40:04.3978962Z SYSTEMVSSCONNECTION exists true
2020-09-25T01:40:04.3979926Z ##[debug]SYSTEMVSSCONNECTION exists true
2020-09-25T01:40:04.4003325Z ##[debug]Got auth token
2020-09-25T01:40:04.4004250Z ##[debug]Agent.ProxyUrl=undefined
2020-09-25T01:40:04.4005572Z ##[debug]Created webApi client for https://pkgs.dev.azure.com/<MyOrganization>/; options: {"proxy":null,"allowRetries":true,"maxRetries":5,"ignoreSslError":false}
2020-09-25T01:40:04.4007252Z ##[debug]Acquiring Packaging endpoints...
2020-09-25T01:40:04.6490830Z ##[debug]Successfully acquired the connection data
2020-09-25T01:40:04.6502681Z ##[debug]Acquired location
2020-09-25T01:40:04.6503915Z ##[debug]{"PackagingUris":["https://dev.azure.com/<MyOrganization>/","https://pkgs.dev.azure.com/<MyOrganization>/","https://pkgsprodcus1.pkgs.visualstudio.com/","https://pkgs.dev.azure.com/<MyOrganization>/","https://<myorganization>.pkgs.visualstudio.com/","https://pkgs.dev.azure.com/<MyOrganization>/"],"DefaultPackagingUri":"https://pkgs.dev.azure.com/<MyOrganization>/"}

Тем не менее, это все еще не удается.

Есть предложения, что я могу попробовать?

Спасибо!!

P.S. Я должен добавить, что у меня есть много дополнительной информации, которой я могу поделиться, включая мой package.json, .npmrc и весь журнал, но я хотел чтобы держать это вкратце. Если вам нужно, чтобы я поделился дополнительной информацией, сообщите мне, и я добавлю их. Спасибо!


person Jeffrey Getzin    schedule 25.09.2020    source источник


Ответы (1)


При подключении к частному каналу с ограниченной областью проекта из конвейера Azure DevOps, который находится в той же организации, но в другом проекте, проект, область действия которого ограничена, должен предоставлять доступ к службе сборки другого проекта. Служба сборки также должна быть отдельно добавлена ​​к разрешениям канала, независимо от области действия канала.

Это проблема с разрешения фида на уровне проекта. Короче говоря, чтобы получить доступ к каналу с областью видимости проекта, который привязан к проекту, который отличается от проекта, в котором запущен конвейер, проект, в котором работает конвейер, должен иметь доступ к ОБЕИМ проекту, для которого привязан канал, и сам корм.

Вот как установить правильные разрешения.

  1. Проверьте проект, в котором запущен конвейер. Разрешение службы сборки, которое необходимо добавить к разрешению канала, и разрешения проекта канала будут выглядеть примерно как [Project name] Build Service ([Organization name]).

  2. В проекте, охватывающем канал, перейдите к настройки разрешений для добавления службы сборки проекта конвейера ([Project name] Build Service ([Organization name])) в группу участников или в другую группа, которая может быть у вашего проекта, которая позволяет участникам получать доступ к своим пользователям.

  3. В разрешение на фид, добавьте [Project name] Build Service ([Organization name]) хотя бы доступ Collaborator, чтобы пакеты можно было загружать из вышестоящих источников. Если вы даете разрешение только на чтение, пакеты не могут быть получены из вышестоящих источников.

person Vito Liu    schedule 25.09.2020
comment
Вы - холодный как камень гений! Это устранило проблему. - person Jeffrey Getzin; 25.09.2020