Добавить в корзинуПозвонить
Найти в Дзене
Цифровая Переплавка

TrunkVer: новая эра версионирования в эпоху непрерывной доставки

В современном мире разработки программного обеспечения концепции непрерывной интеграции (CI) и непрерывной доставки (CD) становятся стандартом. Однако традиционные схемы версионирования, такие как семантическое версионирование (SemVer), не всегда соответствуют требованиям этих подходов. Проект TrunkVerпредлагает инновационное решение, адаптированное для команд, практикующих trunk-based development и стремящихся к автоматизации процессов сборки и деплоя. Семантическое версионирование, широко применяемое в индустрии, предполагает ручное управление номерами версий, что может приводить к: TrunkVer предлагает схему версионирования, которая автоматически генерирует версии на основе нескольких параметров, обеспечивая уникальность и информативность каждой сборки. Версия, формируемая TrunkVer, обычно включает следующие компоненты: Объединяя указанные компоненты, TrunkVer может формировать версию, например: 20241128.145730-a1b2c3d-build-456 TrunkVer легко интегрируется с популярными системами CI
Оглавление

В современном мире разработки программного обеспечения концепции непрерывной интеграции (CI) и непрерывной доставки (CD) становятся стандартом. Однако традиционные схемы версионирования, такие как семантическое версионирование (SemVer), не всегда соответствуют требованиям этих подходов. Проект TrunkVerпредлагает инновационное решение, адаптированное для команд, практикующих trunk-based development и стремящихся к автоматизации процессов сборки и деплоя.

Проблемы традиционного версионирования

Семантическое версионирование, широко применяемое в индустрии, предполагает ручное управление номерами версий, что может приводить к:

  • Человеческим ошибкам: неправильное определение типа изменений (major, minor, patch) может вызвать несоответствия.
  • Задержкам в релизах: ожидание утверждения новой версии увеличивает время вывода продукта на рынок.
  • Сложностям в автоматизации: необходимость ручного вмешательства противоречит принципам CI/CD.

TrunkVer: автоматизация и прозрачность

TrunkVer предлагает схему версионирования, которая автоматически генерирует версии на основе нескольких параметров, обеспечивая уникальность и информативность каждой сборки.

Из чего состоит версия TrunkVer?

Версия, формируемая TrunkVer, обычно включает следующие компоненты:

  1. Временная метка сборки:Основой номера версии является точное время создания сборки. Это может быть представлено в формате года, месяца, дня, часа, минуты и секунды, например: 20241128.145730.
    Этот компонент обеспечивает естественное хронологическое упорядочивание версий.
  2. Хеш коммита:Часть хеша (обычно первые 7–10 символов) коммита в Git включается в номер версии. Пример: a1b2c3d.
    Это позволяет точно определить, на основе какого состояния репозитория была создана конкретная сборка.
  3. Идентификатор сборки в CI/CD:Дополнительно может включаться уникальный идентификатор сборки из системы CI/CD, такой как номер pipeline или job. Пример: build-456.
    Это полезно для интеграции с системами автоматического деплоя и мониторинга.

Пример полной версии

Объединяя указанные компоненты, TrunkVer может формировать версию, например:

20241128.145730-a1b2c3d-build-456

  • 20241128.145730 — дата и время сборки.
  • a1b2c3d — сокращённый хеш коммита.
  • build-456 — идентификатор сборки в системе CI/CD.

Преимущества подхода TrunkVer

  1. Уникальность версий: благодаря хешу коммита и идентификатору сборки каждая версия гарантированно уникальна.
  2. Информативность: анализ версии позволяет быстро определить, когда и на основе чего была создана сборка.
  3. Автоматизация: версия создаётся полностью автоматически, устраняя необходимость ручного вмешательства.
  4. Совместимость с SemVer: при необходимости TrunkVer может быть адаптирован для генерации версий, совместимых с SemVer.

Интеграция с существующими инструментами

TrunkVer легко интегрируется с популярными системами CI/CD, такими как GitHub Actions и GitLab CI. Например:

Пример для GitHub Actions

- name: Generate trunkver

id: trunkver

uses: crftd-tech/trunkver@main

- name: Print trunkver

env:

TRUNKVER: ${{ steps.trunkver.outputs.trunkver }}

run: |

echo "$TRUNKVER"

Пример для GitLab CI

include:

- remote: 'https://gitlab.com/crftd-tech/trunkver-gitlab-ci/-/raw/main/trunkver.gitlab-ci.yml'

Заключение

TrunkVer предлагает новый подход к версионированию, идеально подходящий для мира непрерывной интеграции и доставки. Уникальная структура версий сочетает в себе хронологический порядок, связь с исходным кодом и интеграцию с процессами CI/CD. Это делает TrunkVer мощным инструментом для повышения прозрачности, скорости и надёжности в работе над проектами.

Для более детальной информации и интеграции TrunkVer в ваши проекты посетите официальный сайт проекта.