Рубрики
Uncategorized

Восстановление и публикация пакетов NPM из трубопровода Azure CI

Хотите восстановить и публиковать свои навесные и публичные пакеты NPM Pakes Proupure CI? Вы … помечены с DevOps, Azure, Angular, WebDev.

Вы хотите восстановить и опубликовать вашу Scoped и общественность NPM Пакеты из Azure CI трубопровод ? Хотите настроить CI/CD для приложения узла с помощью лазурных трубопроводов? Вы настраиваете приложение Node.js? Затем прочитайте эту статью. Я продемонстрирую трубопроводы Azure, как использовать .npmrc Файл и опубликовать узел пакеты для артефактов. И потребляйте один и тот же пакет узла в вашем проекте, устанавливая его локально.

Введение

У меня есть один проект, где я зависим от 2 Scoped NPM Библиотеки из артефактов моей собственной компании. И я хочу создать Azure Build CI-трубопровод, который будет делать ниже на станке по сборке:

  1. Установите узел пакеты как Частные навесные и Общественные пакеты NPM .
  1. Создать проект (необязательно)
  2. Опубликовать Dist Папка к моим частным артефактам Azure NPM реестр

Если вы не настроили .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 файл.

  1. Сначала мы должны скопировать файл .npmrc на Package.json. Расположение, где мы определили наш проект Зависимости . Так что NPM будет использовать учетные данные, определенные в .npmrc Файл и установите все выделенные пакеты частных узлов.
- task: CopyFiles@2
    displayName: copy npmrc file
    inputs:
      sourceFolder: 'npmrc'
      Contents: '**'
      targetFolder: './'

  1. Нам нужно установить все NPM пакеты.
 - task: Npm@1
    displayName: 'NPM CI'
    inputs:
      command: ci
      verbose: false

  1. Вот мой финал 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");

Увидеть мой пакет работает

использованная литература

  1. https://docs.npmjs.com/using-private-packages-in-a-ci-cd-workflow

Стать полным разработчиком стека 💻

Я преподаю в 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»