Как использовать частную ленту пакетов npm для управления сборкой и выпуском командных сервисов Visual Studio

Я начал использовать частную ленту npm в своей учетной записи групповых служб Visual Studio, следуя их руководству и добавив файл .npmrc.

registry=https://ascend-xyz.pkgs.visualstudio.com/_packaging/AscendNPMFeed/npm/registry
always-auth=true

Проблема в том, что конвейер сборки сейчас не работает, так как для него требуются некоторые пакеты из этого частного пакета.

Какова правильная настройка для сообщения npm, что он может аутентифицироваться с помощью токена доступа к сборке в командных службах Visual Studio?

Нужно ли мне устанавливать переменную среды, вызывать npm login или что-то еще в качестве шага сборки?


person Poul K. Sørensen    schedule 05.12.2016    source источник


Ответы (1)


Обновление после интенсивного тестирования наших сборок для тех, у кого возникли проблемы с запуском и запуском, а также в отношении первоначального вопроса:

  1. Изменить определение сборки => параметры => «Разрешить скриптам доступ к токену OATH»

Если этот параметр включен и VSTS обнаруживает файл .npmrc, он запускает команду npm.

vsts-npm-auth для вас, что означает, что .npmrc в системе контроля версий должен содержать только

registry=https://YOUR_DOMAIN.pkgs.visualstudio.com/_packaging/FEEDNAME/npm/registry
always-auth=true

Это касается сборок, использующих задачу VSTS Npm, будь то publish или install.



Учитывая, что вы установили переменную среды NPM_TOKEN для работающей сборки VSTS, команда npm publish может заменить ее в вашем файле .npmrc. http://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules

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

registry=https://YOUR_DOMAIN.pkgs.visualstudio.com/_packaging/FEEDNAME/npm/registry
always-auth=true

//ВАШ_ДОМЕН.pkgs.visualstudio.com/_packaging//npm/:_authToken=${NPM_TOKEN}

Токен можно создать, выполнив команду vsts-npm-auth https://www.npmjs.com/package/vsts-npm-auth

Обратите внимание, что в Windows иногда требуются полные пути как для целевого, так и для исходного файла rc (где -T: маркер записи в этот целевой файл), например

vsts-npm-auth -config c:\mysrc\.npmrc -T c:\mysrc\.npmrc -V Подробно

или его можно сгенерировать в диалоговом окне «Подключиться к каналу» внутри вашей (веб-интерфейса) учетной записи VSTS в разделе «Упаковка».

Также обратите внимание, что если вы хотите публиковать это автоматически и непрерывно, вы также должны найти способ увеличить номер версии, что-то вроде

npm version patch --force -m "Published new version"

Взгляните на этот поток для получения дополнительной информации об обновлении версии package.json автоматически

VSTS по умолчанию извлекает идентификатор коммита HEAD, поэтому не просто запустить команду npm version и отправить обратно в git, поскольку один из них находится в отсоединенном состоянии.

person Johan O    schedule 14.12.2016
comment
Спасибо. Я также обнаружил, что при использовании задачи NPM на VSTS они позаботятся об этом. Моя проблема заключалась в том, что я использовал задание grunt для запуска npm install. - person Poul K. Sørensen; 14.12.2016
comment
Из моих текущих тестов я обнаружил, что для npm-установки пакета канала в той же коллекции проектов VSTS не требуется токен, поэтому этого должно быть достаточно, если .npmrc в корне потребляющего приложения имеет только реестр = ... всегда авторизация = ... - person Johan O; 14.12.2016
comment
Да, это я тоже узнал - person Poul K. Sørensen; 14.12.2016
comment
Я хотел бы добавить, что теперь мы отказались от диспетчера пакетов VSTS npm из-за серьезных проблем с производительностью, из-за которых наши сборки терпят неудачу примерно в 40% случаев. - person Johan O; 25.05.2017
comment
Кажется, я не могу повторить это. Вы говорите, что есть задача vsts-npm-auth, которая автоматически запускается при наличии файла .npmrc, который заполняет файл .npmrc проекта учетными данными? Например, если вы запускаете контейнер Docker, может ли он использовать этот файл .npmrc с учетными данными в нем? - person Kevin Ghadyani; 21.02.2018
comment
Кажется, это больше не находится в разделе «Параметры». Я нашел его на вкладке «Задачи», Фаза 1 в разделе «Конвейер» слева. Затем справа в нижней части раздела «Задание агента» «Дополнительные параметры» я смог найти «Разрешить сценариям доступ к токенам OAuth». - person Dan Csharpster; 22.10.2018