semantic-release можно легко интегрировать с GitLab CI/CD для автоматического управления версиями и выпусков. Инструмент будет анализировать ваши коммиты, определять тип изменений (мажорный, минорный или патч) и автоматически выпускать новую версию, создавая соответствующий тег в Git и обновляя changelog.
Шаги для настройки semantic-release с GitLab CI
1. Установка semantic-release
В проекте, где используешь GitLab, необходимо сначала установить semantic-release как зависимость для проекта:
2. Создание .gitlab-ci.yml
Добавь в корневой каталог проекта файл .gitlab-ci.yml, в котором будет определён пайплайн для работы semantic-release. Пример базовой конфигурации:
Здесь:
- image: Используется образ Node.js для выполнения скриптов.
- stage: Указывается этап пайплайна (здесь он называется release).
- script: Запускаются команды для установки зависимостей (npm ci) и запуска semantic-release (npx semantic-release).
- only: Пайплайн будет запускаться только при изменениях в ветке main.
3. Настройка переменных GitLab
Для того чтобы semantic-release мог создавать теги и выполнять изменения в репозитории, ему нужны доступы. Эти доступы можно предоставить через токен.
- Перейди в Settings → CI/CD → Variables в GitLab и добавь следующие переменные:GL_TOKEN: Создай Personal Access Token в GitLab с правами на создание тэгов и запись в репозиторий (Settings → Access Tokens). Добавь этот токен в переменные CI/CD как GL_TOKEN.
GITLAB_TOKEN: Это может быть тот же токен, что и GL_TOKEN. Он нужен для аутентификации при работе с API GitLab.
4. Настройка файла .releaserc
Создай файл .releaserc в корне проекта для конфигурации semantic-release. Пример конфигурации для работы с GitLab:
Здесь:
- branches: Определяет, на каких ветках будет запускаться релиз.
- plugins: Подключает различные плагины для анализа коммитов, генерации changelog и выпуска новых версий на GitLab.@semantic-release/commit-analyzer: Анализирует коммиты и определяет тип версии (мажорный, минорный, патч).
@semantic-release/release-notes-generator: Генерирует заметки о релизе.
@semantic-release/changelog: Обновляет файл CHANGELOG.md.
@semantic-release/gitlab: Выпускает релиз на GitLab.
@semantic-release/npm: Если это NPM-пакет, публикует его.
@semantic-release/git: Коммитит изменения в changelog и версии.
5. Структура коммитов
Для правильной работы semantic-release, тебе нужно придерживаться conventional commits, чтобы коммиты соответствовали определённым шаблонам:
- feat: — для добавления новой функциональности (минорная версия).
- fix: — для исправления багов (патч).
- BREAKING CHANGE: — для обозначения изменений, ломающих обратную совместимость (мажорная версия).
Пример коммитов:
6. Запуск CI/CD пайплайна
При каждом пуше в ветку main пайплайн GitLab CI будет автоматически запускать semantic-release, который:
- Проанализирует коммиты.
- Определит тип версии, который необходимо выпустить (мажорная, минорная или патч).
- Обновит файл CHANGELOG.md.
- Выпустит новую версию, добавив тег в репозиторий.
7. Дополнительно: Настройка уведомлений
Ты можешь настроить уведомления о новых релизах, например, через Slack или Email, используя вебхуки GitLab.
Заключение
semantic-release с GitLab CI позволяет полностью автоматизировать процесс выпуска новых версий и обновления changelog, что значительно снижает вероятность ошибок и упрощает поддержку версионирования для сервисов.
Ваша поддержка имеет значение!
Если вам интересен контент, который я создаю, и вы хотите видеть больше статей на тему программирования и IT, мне очень важна ваша подписка. Она не только показывает, что мои усилия ценятся, но и мотивирует меня продолжать писать.
Понимание того, что есть люди, заинтересованные в моих материалах, вдохновляет меня делиться новыми идеями и полезными советами. Без вашей поддержки я не вижу смысла продолжать, поэтому подписывайтесь на блог, чтобы оставаться в курсе и поддерживать мой труд!