Sobes.tech
Middle
101
questionbank

Как используются переменные версий в процессе разработки? Как они создаются и откуда подтягиваются?

Ответ от нейросети

sobes.tech AI

Переменные версий используются для идентификации конкретного состояния или выпуска программного продукта. Они помогают отслеживать изменения, управлять релизами и обеспечивать воспроизводимость сборок.

Основные способы использования:

  • Идентификация сборки: Каждой сборке присваивается уникальный идентификатор, который может включать номер версии, хеш коммита, таймстамп.
  • Управление релизами: Переменные версий позволяют четко разделять стабильные релизы, бета-версии и ночные сборки.
  • Откат: При возникновении проблем можно быстро вернуться к предыдущей рабочей версии, используя её идентификатор.
  • Логирование и мониторинг: В логах и метриках указывается версия приложения, что упрощает диагностику.

Создание и источники:

  • Системы контроля версий (Git, SVN):
    • Теги: Создаются вручную или автоматически для обозначения значимых точек (например, релизов).
    • Хеш коммита: Уникальный идентификатор каждого коммита.
  • CI/CD системы (Jenkins, GitLab CI, GitHub Actions, CircleCI):
    • Предопределенные переменные: Системы CI/CD предоставляют переменные, содержащие информацию о текущем запуске (номер сборки, ветка, хеш коммита).
    • Скрипты сборки: Переменные версии могут генерироваться скриптами в процессе сборки на основе данных из SCM и CI/CD.
  • Автоматические генераторы версий: Инструменты, которые анализируют историю коммитов (например, на основе Conventional Commits) и автоматически генерируют семантические номера версий (Major.Minor.Patch).
  • Файлы конфигурации: Версия может быть прописана в файлах конфигурации проекта (например, package.json в Node.js, pom.xml в Maven).

Примеры:

# Получение хеша последнего коммита в Git
git rev-parse HEAD
// Jenkins Pipeline - получение номера сборки из предопределенной переменной
println "Build Number: ${env.BUILD_NUMBER}"
# GitLab CI - получение ветки и хеша коммита
# from predefined variables
variables:
  GIT_BRANCH: $CI_COMMIT_BRANCH
  GIT_COMMIT: $CI_COMMIT_SHA

Переменные версий подтягиваются в процесс сборки и развертывания через:

  • Переменные окружения: CI/CD системы экспортируют информацию как переменные окружения.
  • Аргументы командной строки: Передаются в скрипты сборки.
  • Файлы конфигурации: Считываются инструментами сборки.
  • Плагины и расширения: Инструменты сборки и CI/CD системы имеют плагины для интеграции с SCM и автоматического получения информации о версии.