Как сделать автоматическое версионирование в GitLab, GitHub и т.п.?

Ссылка скопирована
19 апреля 2026 1 ответ

Нужно при мерже в master увеличить патчевую версию в гите, в докер-имадже и, например, в package.json
Есть какие-нибудь легковесные тулы для этого? В идеале хочу для этого шага использовать какой-нибудь легковесный контейнер. GitVersion или Node-image выглядят слишком тяжелыми для того, что делается парой sh-скриптов. Можно собирать из скриптов свой контейнер, но наверное уже есть что-то готовое?

Дополнительно:

А по какому принципу версии у вас нумеруются?
Semver или просто номера?

  • Василий Банников, семвер
  • Ответы:

    Я думаю, что можно это сделать при помощи Git Post-Merge Hook или с GitHub actions.

    • Там нет встроенных средств поддержки semver, поэтому ищу что-то типа GitVersion
    • tamtakoe, раз нужен semver, то чем собственно gitversion не устроил?

    Можно в gitlab CI использовать $CI_PIPELINE_ID или $CI_PIPELINE_IID. Наверняка в других тоже есть подобное.

    У нас тут автоматом вешается тэг v$CI_PIPELINE_ID в репе конфигов и сборок и дальше это является версией при деплое. Но ничто не мешает похожим образом делать тэг образа, имя файла, имя артефакта итд.

    • Ну это совсем детское решение. Лучше уж хеш коммитов использовать, он хотя бы не обнулится при перезагрузке гитлаба)
    • tamtakoe, pipeline id тоже не обнулится.

    Для npm есть например вот такое:
    https://dev.to/zirkelc/release-npm-package-with-au...

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Анна SEO Ответ

    Для осуществления автоматического версионирования в GitLab, GitHub и других системах управления версиями, можно воспользоваться преимуществом функционала тегирования коммитов.

    Ниже приведен пример того, как можно настроить автоматическое версионирование с использованием GitLab CI/CD:

    1. Создайте файл .gitlab-ci.yml в корне вашего репозитория с содержимым:

    stages:
      - build
    
    build:
      stage: build
      script:
        - export VERSION=$(cat VERSION)
        - git tag $VERSION
        - git push --tags

    stages: - build build: stage: build script: - export VERSION=$(cat VERSION) - git tag $VERSION - git push --tags

    2. Создайте файл VERSION в корне вашего репозитория и запишите в него начальную версию вашего проекта (например, 1.0.0).

    3. Настройте GitLab CI/CD для вашего проекта.

    4. При каждом успешном запуске CI/CD, новый тег будет создан в вашем репозитории с версией из файла VERSION.

    Для GitHub можно использовать похожий подход, но с некоторыми отличиями. Вот пример настройки GitHub Actions для автоматического версионирования:

    1. Создайте файл .github/workflows/versioning.yml в корне вашего репозитория с содержимым:

    name: Versioning
    
    on:
      push:
        branches:
          - master
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
        - name: Checkout code
          uses: actions/checkout@v2
        - name: Set up Git
          run: git config --global user.email "actions@github.com" && git config --global user.name "GitHub Actions"
        - name: Get version
          run: export VERSION=$(cat VERSION)
        - name: Create tag
          run: git tag $VERSION
        - name: Push tag
          run: git push --tags

    name: Versioning on: push: branches: - master jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Set up Git run: git config --global user.email "actions@github.com" && git config --global user.name "GitHub Actions" - name: Get version run: export VERSION=$(cat VERSION) - name: Create tag run: git tag $VERSION - name: Push tag run: git push --tags

    2. Создайте файл VERSION в корне вашего репозитория и запишите в него начальную версию вашего проекта.

    3. Настройте GitHub Actions для вашего проекта.

    4. После каждого успешного пуша в ветку master, новый тег будет создан в вашем репозитории с версией из файла VERSION.

    Таким образом, вы можете настроить автоматическое версионирование в GitLab, GitHub и других системах управления версиями с помощью тегирования коммитов и использования CI/CD инструментов.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно