Версии не увеличиваются автоматически

Я использую https://github.com/sbt/sbt-git, чтобы воспользоваться преимуществами автоматического управления версиями, как описано в разделе Управление версиями с помощью Git.

Мой файл build.sbt выглядит следующим образом:

version := "0.1.0"

scalaVersion := "2.12.8"

scalacOptions ++= Seq(
  "-encoding", "UTF-8", // source files are in UTF-8
  "-deprecation", // warn about use of deprecated APIs
  "-unchecked", // warn about unchecked type parameters
  "-feature", // warn about misused language features
  "-language:higherKinds", // allow higher kinded types without `import scala.language.higherKinds`
  "-Xlint", // enable handy linter warnings
  "-Xfatal-warnings", // turn compiler warnings into errors
  "-Ypartial-unification" // allow the compiler to unify type constructors of different arities
)

scalacOptions in(Compile, console) ~= {
  _.filterNot(Set("-Xlint"))
}

libraryDependencies ++= Seq(
  "org.typelevel" %% "cats-core" % "1.6.0",
  "ch.qos.logback" % "logback-classic" % "1.2.3",
  "com.typesafe.scala-logging" %% "scala-logging" % "3.9.2"
)

libraryDependencies ++= Seq(
  "org.scalacheck" %% "scalacheck" % "1.14.0" % "test",
  "org.scalactic" %% "scalactic" % "3.0.6" % "test",
  "org.scalatest" %% "scalatest" % "3.0.6" % "test"
)

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-slf4j" % "2.5.22",
  "ch.qos.logback" % "logback-classic" % "1.2.3"
)

libraryDependencies += "com.dimafeng" %% "testcontainers-scala" % "0.25.0" % "test"


enablePlugins(JavaServerAppPackaging)
enablePlugins(DockerPlugin)
enablePlugins(GitVersioning)
dockerExposedPorts := Seq(8080)
git.formattedShaVersion := git.gitHeadCommit.value map { sha =>
  s"$sha".substring(0, 7)
}

dockerUpdateLatest := true
dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value)  

После фиксации он не увеличивается автоматически с версии «0.1.0» до «0.2.0».

Что я делаю неправильно?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
264
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Краткий ответ:

  1. Удалите / исключите явную версию настройки из вашего build.sbt файла (т.е. этого оператора version := "0.1.0")
  2. Создайте тег git, чтобы установить желаемую версию (с префиксом v), см., например, документ
>git tag -a v0.2.0  -m "my version 0.2.0"

Затем вы можете увидеть версию, установленную плагином, запустив:

>sbt version
// Displays
// [info] 0.2.0

Вот небольшое объяснение:

Итак, принцип работы sbt-git заключается в том, что он устанавливает для вас версию вашей сборки sbt (та, которую вы получаете в результате запуска sbt version). Для этого следует несколько правила, вот первые 2:

  1. Looks at version-property setting (default to project.version), and checks the sys.props to see if this has a value. If so, use it.
  2. Otherwise, looks at the project tags. The first to match the gitTagToVersionNumberSetting is used to assign the version. The default is to look for tags that begin with v and a number, and use the number as the version. If there are multiple version tags, it will pick the highest.

Итак, в вашем случае, поскольку вы явно установили project version на 0.1.0 в своем build.sbt, в результате запуска sbt version вы получите 0.1.0. Даже после выполнения некоторых коммитов значение sbt version все равно будет 0.1.0, потому что будут применяться правила (если версия установлена ​​в вашем build.sbt). Обратите внимание, что плагин не изменяет значение, установленное в этом файле., он использует его только тогда, когда он определен.

Если бы вы использовали удалить эту строку (version := "0.1.0"), тогда применялось бы правило 2, которое в двух словах ищет tag и возвращает первое соответствие gitTagToVersionNumberSetting, которое по умолчанию представляет собой строку, начинающуюся с v и за которой следует число.

Таким образом, чтобы установить для вашего проекта версию 0.2.0 с помощью плагина, вам нужно будет создать тег поверх головного коммита v0.2.0 (например, работающий git tag -a v0.2.0 -m "my version 0.2.0").

И по мере разработки вашего проекта будет добавлено несколько коммитов, ведущих к вашей версии 0.3.0 (или 0.2.1), и как только вы создадите соответствующий тег поверх последнего коммита — скажем, тег v0.3.0 — тогда plugin выберет его. up (применив правило 2) и используйте его, чтобы установить его как версию вашего проекта (которую вы могли увидеть, запустив sbt version, как было сказано ранее).

Это поток, который вы бы использовали в основном для того, чтобы ваша версия проекта следовала за вашей (git) tags версией.

Итак, идея здесь в том, что вместо того, чтобы плагин обновлял версию, указанную в вашем build.sbt, там вообще не указана версия. Вместо этого плагин вычисляет версию (на лету, в начале каждой сборки), просматривая ваш статус git.

Thilo 26.05.2019 05:14

Я правильно понимаю, когда я его коммичу, то он автоматически посчитает версию?

softshipper 26.05.2019 10:53

Я имею в виду, например, текущий тег v0.2.0. Затем я вношу некоторые изменения в код, фиксирую его, после чего я ожидаю, что тег автоматически увеличится до 0.3.0.

softshipper 26.05.2019 11:06

@zero_coding, в основном вам нужно создать тег поверх вашего коммита, и плагин будет использовать его для установки версии вашего проекта.

Valy Dia 26.05.2019 11:24

Отличный материал :)!

Valy Dia 26.05.2019 13:09

Другие вопросы по теме