Как работать с семантическим управлением версиями в Jenkins

Я начинаю с Дженкинса на моем рабочем месте. Мы используем семантическое управление версиями с Teamcity, и я хочу реализовать то же самое в Jenkins. Моя проблема возникает, когда я сохраняю артефакты в папке сборки ($ JENKINS_HOME / jobs / $ JOB_NAME / builds / $ BUILD_NUMBER), потому что Jenkins использует только build_number для создания папки для сборки, поэтому, когда мне нужно сбросить de Build_number, будущие артефакты будут хранится в папке с предыдущими сборками.

Например:

У меня хранится сборка 1.3.1_develop.1, когда я сбрасываю Build_Number, следующая сборка должна быть 1.3.2_develop.1, и она должна храниться в папке 1 сборки 1.3.1_develop.1

Мой вопрос в том, может ли кто-нибудь объяснить мне, как бороться с автоматическим семантическим управлением версиями на jenkins, потому что мы сбрасываем номер сборки, мы увеличиваем мэр, второстепенный номер и номер патча.

Версия Jenkins: 2.89.4 Jobs -> Мы используем задания для компиляции Vuejs спереди и для развертывания обратно с помощью python (если это помогает)

Спасибо за любую помощь.

Ваша система сборки детерминирована? Всегда ли он дает одинаковый результат для каждого фиксированного набора входов?   —  person Carlos Cupeiro    schedule 17.03.2018

Нет, моя система сборки создает папку, в которой Build_number всегда увеличивается, но я сбрасываю номер, чтобы начать заново. (Дженкинс так и поступает)   —  person Carlos Cupeiro    schedule 19.03.2018

См. также:  Задача сборки Visual Studio Online TFS — файл не копируется
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 2
  1. Carlos Cupeiro

    Первое, что я замечаю, это то, что вы неправильно используете семантическое управление версиями. 1.3.1_develop.1 должно быть 1.3.1-develop+1. Метаданным сборки всегда должен предшествовать знак плюса «+», и они не учитываются в порядке сортировки SemVer.

    Во-вторых, номер сборки никогда не «сбрасывается», в конечном итоге он может измениться, но его никогда не следует сбрасывать. Номер сборки, который не указывает на машину, выполняющую сборку, также обычно бесполезен, если только он не может быть когда-либо.

    По сути, в семантическом управлении версиями нет понятия номера сборки. Стандарт определяет синтаксис для метаданных сборки, но полностью нейтрален в отношении того, что может быть включено. Номера сборки обычно бесполезны на уровне семантического управления версиями. Они используются для предотвращения конфликтов каталогов в системах сборки CI и даже предоставляют уникальный идентификатор для некоторых линеек продуктов (например, Windows), особенно там, где семантическое управление версиями не используется (снова Windows).

    Я рекомендую использовать SHA-1 или лучший хэш входов сборки (например, Git commit Id) в метатеге сборки в дополнение к любому счетчику сборки и использовать его для имени вашего выходного каталога. Вы по-прежнему можете использовать монотонный счетчик в своих тегах prerelease, но вам нужно будет создать имя каталога вывода сборки, которое включает всю строку semver, чтобы сохранить уникальность.

    В-третьих, ваша машина сборки — худшее место для архивации артефактов сборки! Автоматизация сборки может время от времени работать ужасно неправильно. Ваша система сборки не должна иметь доступа к вашему архиву артефактов сборки. Когда ваша сборка и начальное дымовое тестирование завершены, он должен сигнализировать процессу, запущенному на совершенно другой машине, чтобы переместить артефакты с машины сборки в более безопасное место. Ни один процесс, запущенный в системе сборки, не должен иметь права записи в ваш архив артефактов сборки.

    Прежде всего спасибо за ваш ответ. Мы также храним успешные сборки в другом месте на машине Google, знаете ли вы, есть ли способ связать в сборке jenkins эту версию, скопированную на машине Google ?? Я хочу получить доступ к последним версиям в jenkins, я не знаю, правильный ли это способ сделать это, но в Teamcity мы можем получить доступ к 20 последним сборкам. Вы говорите об использовании счетчика, и это должно мне помочь, но есть способ автоматически увеличить этот счетчик ?? извините, если задаете тупые вопросы, но Дженкинс для меня новичок, и я действительно смущен этим person Carlos Cupeiro; 19.03.2018

    Jenkins — это просто еще одна случайная среда CI, о которой я ничего не хочу знать. Я могу помочь вам с SemVer и общими процессами / шаблонами CI, но не с деталями. Если у Jenkins нет встроенной поддержки того, что вы хотите сделать, вы всегда можете написать для этого сценарий. Счетчики довольно просто реализовать с помощью номера в файле. person Carlos Cupeiro; 19.03.2018

  2. Carlos Cupeiro

    Существует инструмент GitVersion, который делает то, что вы хотите, и его можно интегрировать с Jenkins или другим CI.

    https://gitversion.readthedocs.io/en/latest/build-server-support/build-server/jenkins/

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: