Развертывание конвейера IBM Cloud DevOps с помощью NodeJS и частного реестра

Используя частный реестр в связи с конвейером IBM Cloud DevOps, мы опубликовали модули. В конвейере DevOps также возможна сборка с использованием следующей тактики:

    #!/bin/bash
    export PATH=/opt/IBM/node-v6.7.0/bin:$PATH
    npm config set @<scope>:registry <registry-url>
    echo "//<registry-url-short>:_authToken=$NPM_TOKEN" >> ~/.npmrc
    npm install

Таким образом, будут найдены и установлены как общедоступные, так и частные модули. Однако, когда приходит время развертывания в среде выполнения NodeJS, «установка npm» выполняется на стороне платформы.

Как мы можем указать это выше?


person jarkko    schedule 20.12.2017    source источник


Ответы (2)


Другой подход заключается в том, чтобы упаковать ваш файл .npmrc вместе с вашим приложением, когда вы его отправляете. Подробнее здесь https://github.com/cloudfoundry/nodejs-buildpack/issues/79

Подход здесь заключается в создании .npmrc как части этапа сборки и добавлении его в корень папки артефактов. На следующем этапе, когда вы развернете приложение из папки артефакта, ваша конфигурация npm будет правильно настроена для конфигурации каждого проекта (см. https://docs.npmjs.com/files/npmrc), и установка npm, которую выполняет пакет сборки узла cf, будет работать правильно.

person Simon Kaegi    schedule 21.12.2017
comment
Возможно, объясните немного больше о том, что должно произойти? - person Jeffrey; 21.12.2017
comment
Саймон, когда вы говорите упаковать файл .npmrc и то, что я прочитал по ссылке, это звучит так, как будто вы хотите поместить файл в репозиторий. Это определенно не идеально. Но это работает. Если бы вы могли отредактировать свой ответ, чтобы более четко указать, что он может быть создан во время процесса сборки, а не в $HOME/.npmrc (как я думал), а в пакет сборки .npmrc, то я могу отметить это как принятый ответ. - person jarkko; 21.12.2017
comment
Совершенно верно. Вы определенно никогда не захотите поместить свой .npmrc с кредитами в свой репозиторий системы управления версиями. Идея состоит в том, чтобы на этапе сборки поместить файл .npmrc в корень папки, которую вы используете для артефактов сборки. На этапе развертывания вы затем нажимаете эту папку. Это настраивает вас на использование конфигурации npm для каждого проекта вместо копирования этого файла в ~/.npmrc, который является конфигурацией для каждого пользователя. См. docs.npmjs.com/files/npmrc. - person Simon Kaegi; 21.12.2017

Один из возможных способов — загрузить ваши приватные модули в другой каталог с помощью скрипта postinstall в npm. Вот хорошее объяснение того, как этого добиться.

https://github.com/pmuellr/bluemix-private-packages

person S. Holmes    schedule 20.12.2017
comment
Я попробовал это. Кажется, он наткнулся на то, как обрабатывается область. Это еще одна папка в node_modules. Таким образом, когда он пытается создать папку node_modules/‹scope›/‹privatemod›, это не удается. Если успеете заранее создать для него node_modules/‹scope› — то работает. Но я думаю, что я пойду с созданием времени сборки .npmrc не в $ HOME, а в пакет сборки, потому что это меньше изменений приложения, и у нас есть несколько приложений. - person jarkko; 21.12.2017