Вы хотите восстановить и опубликовать вашу Scoped и общественность NPM
Пакеты из Azure CI трубопровод
? Хотите настроить CI/CD для приложения узла с помощью лазурных трубопроводов? Вы настраиваете приложение Node.js? Затем прочитайте эту статью. Я продемонстрирую трубопроводы Azure, как использовать .npmrc
Файл и опубликовать узел пакеты для артефактов. И потребляйте один и тот же пакет узла в вашем проекте, устанавливая его локально.
Введение
У меня есть один проект, где я зависим от 2 Scoped NPM
Библиотеки из артефактов моей собственной компании. И я хочу создать Azure Build CI-трубопровод, который будет делать ниже на станке по сборке:
- Установите узел пакеты как
Частные навесные
иОбщественные пакеты NPM
.
- Создать проект (необязательно)
- Опубликовать
Dist
Папка к моим частным артефактам AzureNPM
реестр
Если вы не настроили .npmrc
Файл в вашем локальном поле еще. Тогда пожалуйста, прочитайте Настройка NPMRC в поле Windows Developer для Azure DevOps Server Отказ
Создание репо на Azure DevOps Server
Создайте свой репозиторий в Azure DEVOPS SERVER. Это мое репо. Вы можете создать угловой
, vue.js
или любой проект. Я создал простой проект JavaScript.
Создание токена персонального аутентификации для трубопровода Azure CI/CD
Нам нужен один личный токен аутентификации, чтобы запустить CI/CD
в лазурных трубопроводах. Поэтому создайте PAT называемый как NPM-CICD
в Azure Tokens и Base64
кодировать это. Узнайте больше здесь Отказ
Мы создадим новую переменную среду Azure CI/CD и использовать эту Base64
закодированное значение.
Создание тайна NPM_Token на сервере Azure CI/CD
Отредактируйте свой лазурный трубопровод и в переменных создайте новый секрет NPM_Token
, на вашем сервере CI/CD. Установите свой Base64
закодирован токен авторизации
как это значение.
Создание и проверка В конкретной проекте .NPMRC файл
Узнайте, как создать .npmrc.
здесь Отказ
Если вы держите .npmrc
На корневом уровне тогда для местного разработчика, когда они пытаются установить NPM
Пакеты они получит ошибку.
Error: Failed to replace env in config: $(NPM_TOKEN)
Поэтому рассмотреть возможность движения .npmrc
Файл шаблона в NPMRC/.NPMRC
место расположения. Создать .npmrc
Файл на NPMRC/.NPMRC
место расположения. Убедитесь, что вы поставили .npmrc
Файл под какой-то папкой, я поставлю его в NPMRC/.NPMRC
Отказ Вы можете использовать любое имя для этой папки.
Далее в .npmrc
Файл Обязательно используйте $ (NPM_Token)
Для поля пароля в вашем .npmrc
файл. Мы будем использовать переменную среды Azure Cover Erunds для динамического замены значения $ (NPM_Token)
В нашем .npmrc
Файл в сборку в трубопроводе Azure CI.
@myorg-branding:registry=http://myorg-tfs:8080/tfs/DefaultCollection/_packaging/NpmFeed/npm/registry/ @myorg-customers:registry=http://aicpa-tfs:8080/tfs/DefaultCollection/_packaging/NpmFeed/npm/registry/ always-auth=true ; begin auth token //myorg-tfs:8080/tfs/DefaultCollection/_packaging/NpmFeed/npm/registry/:username=NPM-CICD //myorg-tfs:8080/tfs/DefaultCollection/_packaging/NpmFeed/npm/registry/:_password=$(NPM_TOKEN) //myorg-tfs:8080/tfs/DefaultCollection/_packaging/NpmFeed/npm/registry/:email=myorg@myorg.com //myorg-tfs:8080/tfs/DefaultCollection/_packaging/NpmFeed/npm/:username=NPM-CICD //myorg-tfs:8080/tfs/DefaultCollection/_packaging/NpmFeed/npm/:_password=$(NPM_TOKEN) //myorg-tfs:8080/tfs/DefaultCollection/_packaging/NpmFeed/npm/:email=myorg@myorg.com ; end auth token
Создание лазурного трубопровода для восстановления пакетов NPM во время сборки CI
Создать Azure-Pipelines.yml
файл.
- Сначала мы должны скопировать файл .npmrc на
Package.json.
Расположение, где мы определили наш проектЗависимости
. Так что NPM будет использовать учетные данные, определенные в.npmrc
Файл и установите все выделенные пакеты частных узлов.
- task: CopyFiles@2 displayName: copy npmrc file inputs: sourceFolder: 'npmrc' Contents: '**' targetFolder: './'
- Нам нужно установить все
NPM
пакеты.
- task: Npm@1 displayName: 'NPM CI' inputs: command: ci verbose: false
- Вот мой финал
Azure-Pipelines.yaml.
trigger: - master pool: name: "Default" steps: - task: CopyFiles@2 displayName: copy npmrc file inputs: sourceFolder: "npmrc" Contents: "**" targetFolder: "./" - task: Npm@1 displayName: "NPM CI" inputs: command: ci verbose: false
Запуск лазурных трубопроводов для восстановления пакетов NPM NPM на CI
Во время работы CI Build он будет динамически использовать NPM_Token
В моем .npmrc
Файл и используйте это учетные данные, чтобы восстановить Scoped Private NPM
Пакеты из лазурных артефактов питаются. Обратите внимание на мою постройку добиться успеха И я мог бы установить все свои местные и публичные узловые пакеты.
.npmrc требуется во время публикации пакета NPM NPM
Итак, мы могли бы установить Scoped NPM
Пакеты во время CI Build. Теперь мы добавим NPM публиковать
Скрипт для публикации нашего проекта в корм Azure Artifacts. Однако уведомление в моем проекте я хочу опубликовать мои файлы, которые находятся под распад
папка.
Вы можете знать, что для публикации файлов на NPM
Реестр. Вы должны добавить .npmrc
Файл в место, где ваш package.json
присутствует и из места, где вы работаете NPM публиковать
скрипт
Поэтому мы должны скопировать .npmrc
Файл к Dist
папка тоже. Я сделаю этот процесс копирования в моем построить
скрипт
Создание сценария сборки для копирования файла .NPMRC в папку Dist
Установить copyfiles В вашем проекте DevDependonds. Беги npm я copyfiles -d
Создать построить
Сценарий Добавить ниже код:
"scripts": { "build": "copyfiles -f npmrc/.npmrc dist" },
Беги построить NPM запустить сборку
Обратите внимание .npmrc
Файл скопирован на Dist
папка.
Если вы используете Угловой Проект затем сделать ниже, чтобы получить .npmrc
Файл скопирован автоматически на NG Build
команда.
Перейти к angular.json
или если вы используете NX MONOREPO Тогда иди к Workspace.json
и определить местоположение yourprojectname.targets.build.options.assets.assets.
В этом месте просто добавьте свой .npmrc
Путь файла, и он будет автоматически скопирован в папку Dist.
"YourAngularApp": { "targets": { "build": { "options": { ... "assets": [ ..., "apps/cutepuppies-admin/src/.npmrc" ],
Добавление скрипта сборки в трубопроводах Azure CI
Теперь мы добавим скрипт командной строки Azure Povelines для запуска NPM запустить сборку
Отказ Добавьте ниже скрипт на Azure-Pipelines.yml.yml.yml.
- script: npm run build displayName: Build
Уведомление Создать успех:
Добавление публикации скрипта в Azure CI трубопроводы
Теперь мы будем работать NPM публиковать
от Dist
папка. Добавьте ниже скрипт на Azure-Pipelines.yml.yml.yml.
- script: npm publish displayName: Publish workingDirectory: "./dist"
Уведомление Опубликовать успех:
Проверьте артефакты Azure, чтобы увидеть ваш пакет NPM
Сейчас я пойду на предельному Azure Артефакты
и искать мой NPM
упаковка. Обратите внимание на мою посылку в моих артефаксах.
Установите пакет NPM и используйте его
Далее я устанавливаю свои опубликованные NPM
Пакет в каком-то проекте и попытаться использовать его.
const { log } = require("@myorg-branding/testing-cicd"); log("Working with my new package logger");
Увидеть мой пакет работает
использованная литература
Стать полным разработчиком стека 💻
Я преподаю в FullStack Master Отказ Если вы хотите стать полным разработчиком стека и выращивать свой носитель как новый разработчик программного обеспечения или разработчика/архитектора. Рассмотрим подписку на наш полный учебные программы развития стека. Вы можете записаться на всесторонние планы ежемесячного члена для получения неограниченного доступа ко всем нашим видеоуровневым курсам, слайдам, исходным кодам и ежемесячным видеозвонкам.
- Пожалуйста, подпишитесь на Всеобъемлющий членский план Pro Plan Чтобы получить доступ к току и будущему углованию, Node.js и связанные с ними курсы.
- Пожалуйста, подпишитесь на All-Access Членство Elite Plan Чтобы получить все от Pro Plan. Кроме того, вы получите доступ к ежемесячному видео и видео-звонке Live Q & A с Rupesh, и вы можете спросить сомнений/вопросов и получить дополнительную помощь, советы и трюки.
Вы светлое будущее ждут вас, чтобы посетить сегодня FullStackMaster И позвольте мне помочь вам в бою на компанию Software Software в качестве разработчика, архитектора или лидирующей роли инженера.
💖 Скажи 👋 мне! Рупеш Tiwari www.rupeshtiwari.com ✉️. Электронная почта Рупеш Основатель Master FullStack
Оригинал: «https://dev.to/rupeshtiwari/restoring-and-publishing-npm-packages-from-azure-ci-pipeline-728»