Управление выпусками еще никогда не было таким простым!

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

Управление релизами должно как минимум состоять из следующих действий:

  • Управление версиями, гораздо предпочтительнее, чтобы соответствовать Семантическому управлению версиями.
  • Управление журналом изменений
  • Управление выпусками: canary, pre-release и latest build.

Почему intuit / auto?

Хотя есть несколько инструментов, которые мы можем использовать для автоматизации вышеуказанных действий, intuit/auto работает на основе запросов на вытягивание, чего мы, несомненно, ожидаем использовать в проекте с участием команды разработчиков или участников 😀. Таким образом, ожидается, что накладные расходы на внедрение этой автоматизации будут минимальными.

Настройка intuit / auto

Для простоты мы будем реализовывать intuit/auto в проекте Javascript на Github. Это может быть наш существующий проект, или мы можем просто создать новый.

Сначала установите auto в нашем проекте как devDependencies. Конечно, мы можем использовать npx auto для выполнения всех его команд без необходимости устанавливать их локально. Я предпочитаю устанавливать его локально, поскольку это помогает сократить время выполнения моего CI runner, поскольку пакет intuit/auto должен существовать в кешированном node_modules для последующих запусков. Подробнее об этом позже.

Затем добавьте auto в блок скрипта в `package.json`.

Проверьте приведенный выше сценарий, запустив yarn auto -- -V. Он должен вывести нашу недавно установленную версию пакета.

Инициируйте auto, запустив yarn auto -- init. Затем нам будет предложено выбрать, какой менеджер пакетов мы используем. Давайте выберем для этого Git Tag, поскольку мы не будем публиковать наш проект в репозитории NPM.

Затем он покажет, какие плагины мы хотели бы использовать. Хотя мы можем установить это позже, я решил использовать плагин Released. Этот плагин автоматически помечает объединенные и выпущенные запросы на вытягивание с помощью released.

Введите адрес нашего репозитория Github.

Введите наше имя пользователя Github и адрес электронной почты, которые мы хотели бы использовать для этого проекта. Это то, что мы обычно делаем, используя git config user.name и git config user.email в каждом нашем проекте.

Теперь нам нужно выбрать, делать ли выпуск, только если соответствующие запросы на вытягивание имеют метку release. Я предпочитаю не использовать это, предполагая, что каждый запрос на вытягивание представляет собой отдельное изменение, поэтому для каждого должен быть свой выпуск. Кроме того, мы можем использовать метку skip-release, чтобы не выпускать релиз для конкретного запроса на вытягивание. Подробнее об этом позже.

Теперь, если у нас уже есть .env файл в корне нашего проекта, который находится в том же каталоге, где находится package.json, мы можем пропустить следующий шаг.

Что касается этикеток, то мы пока можем пропустить этот.

На этом этапе интерфейс командной строки должен был перестать нас выводить. Но подождите, это еще не все. Хотя мы решили использовать Git Tag для нашего диспетчера пакетов, intuit/auto CLI на самом деле не устанавливает этот плагин для нас. Итак, перед дальнейшими шагами давайте установим для этого необходимый пакет.

Вуаля! Это просто! intuit/auto теперь настроен и настроен в нашем проекте. Мы можем посетить папку нашего проекта и проверить .autorc.

Помните подсказку create labels? intuit/auto имеет предопределенный набор меток под капотом, состоящий из major, minor, patch, prerelease и многих других. Если мы уверены, что будем использовать эти метки для наших запросов на вытягивание, мы можем запустить yarn auto -- create-labels.

Предупреждение: это приведет к созданию и / или изменению меток в нашем репозитории Github.

Затем мы можем посетить наш репозиторий, чтобы увидеть наши недавно созданные метки.

Далее…

Теперь, когда intuit/auto настроен и настроен в нашем проекте, пришло время сделать несколько запросов на вытягивание! 😀

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