Управление версиями не увеличивается автоматически - PullRequest
1 голос
/ 25 мая 2019

Я использую 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».

Что я делаю не так?

1 Ответ

5 голосов
/ 26 мая 2019

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

  1. Удалите / пропустите явную версию настройки из вашего файла build.sbt (т. Е. Это утверждение version := "0.1.0")
  2. Создайте тег git дляустановите желаемую версию (с префиксом v), см. doc , например
>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. Проверяет настройку свойства версии (по умолчанию для project.version) и проверяетsys.props, чтобы увидеть, имеет ли это значение.Если так, используйте это.
  2. В противном случае просматривает теги проекта.Первый, который соответствует gitTagToVersionNumberSetting, используется для назначения версии.По умолчанию ищутся теги, которые начинаются с v и числа, и используют число в качестве версии.Если есть несколько тегов версий, он выберет самый высокий.

Так что в вашем случае, потому что вы явно установили 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, вам необходимо создать тег поверх заголовка commit 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 выберет это (применяя правило 2) и использует его, чтобы установить его как версию вашего проекта (которую вы можете увидеть, запустив sbt version, как было сказано ранее).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...