Как сделать автоматическое версионирование в GitLab, GitHub и т.п.?
Нужно при мерже в 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...
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для осуществления автоматического версионирования в 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
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
2. Создайте файл VERSION в корне вашего репозитория и запишите в него начальную версию вашего проекта.
3. Настройте GitHub Actions для вашего проекта.
4. После каждого успешного пуша в ветку master, новый тег будет создан в вашем репозитории с версией из файла VERSION.
Таким образом, вы можете настроить автоматическое версионирование в GitLab, GitHub и других системах управления версиями с помощью тегирования коммитов и использования CI/CD инструментов.