Рубрики
Uncategorized

Автоматизация выбросов NPM с использованием семантического выпуска

В идеальном мире исходный код NPM библиотеки находится в синхронизации с версиями, опубликованными на NP … Помечено Github, NPM, DEVOPS, JavaScript.

В идеальном мире исходный код библиотеки NPM находится в синхронизации с версиями, опубликованными в реестре NPM.

Проблема Состоит в том, что последние версии пакета, опубликованные NPM, отсутствуют за их кодом. Это приводит к

  1. Разочарованные участники , чьи позывные запросы были объединены, а теперь ждать, чтобы использовать новую версию, которая включает в себя свои исправления или функции
  2. Запутанные пользователи который работает в ошибку, которая помечена как разрешена на GitHub
  3. Подчеркнул сопровождающие которые дают давление на такие комментарии, как «когда это исправление будет выпущено?» по закрытым вопросам и потяжным запросам.

Решение : Автоматизация. Введите семантический релиз

В двух словах семантический релиз Полагается на конверсии по сообщениям по сообщениям, чтобы рассчитать и публиковать новую версию вашего пакета. По умолчанию, 3 конвенция

  1. Исправить: ... Префикс в субъекте совершения: триггеры версии релиз Fix, например 1.2.31.2.4
  2. feat: ... Префикс в субъекте совершения: триггеры версии функции, например 1.2.31.3.0
  3. Преодоление изменений: В Commit Body: триггеры разбития версии, например, 1.2.32.0.0

Это все, что вам нужно учиться.

Основываясь на этих конвенциях, новые версии постоянно публикуются в NPM. Ваш код на GitHub и опубликованные версии на НПМ никогда не будет снова вне синхронизации.

Но семантический выпуск делает гораздо больше, чем это:

  1. Он создает релизы GitHub для отражения версий, опубликованных в NPM, и добавляет изменяемые файловые файлы на основе приведенных выше конвенций и добавляет их в релизы GitHUB.
  2. Это уведомлеет о комментариях с комментариями привлечения запросов и разрешенных вопросам, что новая версия была выпущена
  3. Это позволяет вам контролировать в одном месте, который оба могут объединить изменения в Мастер Филиал и публикация новых версий в НПМ.

Настройка с использованием действий GitHub

семантический релиз Поддерживает множество поставщиков CI, GIT Hosts и реестров пакетов. Для этого примеру я буду использовать действия GitHub для публикации на NPM.

Установите семантический релиз

npm install --save-dev semantic-release

Если это существующий проект, обязательно создать тег GIT, который соответствует последней версии в регистр NPM, используя V приставка. Например, если последняя версия, опубликованная NPM, является 2.0.4 Создать v2.0.4 тег и подтолкните его к вашему репозиторию.

git tag v2.0.4
git push --tags

Не нужно создавать тег для новых пакетов, которые еще не были опубликованы.

Далее замените версию в свой package.json Файл с «0.0.0-разработкой». Версия будет обновляться автоматически путем семантического выпуска. Вам больше не нужно беспокоиться об этом.

Далее создайте токен NPM для вашей учетной записи в https://www.npmjs.com/settings/[your Имя пользователя]/Токены с Читать и опубликовать параметр. Скопируйте этот токен и храните его В секретах вашего репозитория используя имя NPM_Token Отказ

Наконец, создать .Github/Workflows/Release.yml Файл для запуска семантического выпуска каждый раз, когда изменение нажата в ваш репозиторий Мастер ветвь.

name: Release
on:
  push:
    branches:
      - master

jobs:
  release:
    name: release
    runs-on: ubuntu-latest
    steps:
      # check out repository code and setup node
      - uses: actions/checkout@v1
      - uses: actions/setup-node@v1
        with:
          node-version: "12.x"
      # install dependencies and run semantic-release
      - run: npm ci
      - run: npx semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

Вот и все. В следующий раз, когда вы объединяете запрос на потянув с помощью сообщений, указанные после упомянутых выше конвенций, семантик-релиз создаст выбросы NPM и GitHUB, а также комментарии к запросу на потяжете и связанные вопросы.

Закрытие слов

Вы можете увидеть семантический релиз В действии по всему моим проектам на Github. Я обычно делаю несколько релизов каждый рабочий день. Я даже больше не думаю об этом. Это освобождает мое время и мысли, чтобы сосредоточиться на коде, а не по дому.

И, наконец, наконечник: автоматизация выпусков идет рука об руку с автоматическим обновлением зависимости. Такие услуги, как Greenkeeper Даже следуйте необходимым конвенциям по совершенствованию, когда они отправляют свои запросы на тягу. Объединение PRS — это все, что нужно, чтобы выпустить новую версию. Я настоятельно рекомендую использовать их обоих!

Оригинал: «https://dev.to/gr2m/automate-npm-releases-using-semantic-release-510c»