Как получить значение git.gitTagToVersionNumber? - PullRequest
0 голосов
/ 13 июня 2019

Я использую https://github.com/sbt/sbt-git и https://sbt -native-packager.readthedocs.io / en / stable / index.html и хотел бы присвоить значение git.gitTagToVersionNumberмой докер контейнер

Я пытался:

git.useGitDescribe := true

Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitTagToVersionNumber.value)  

это не работает, потому что тип последнего аргумента DockerAlias не совпадает.

Как получить значение git.gitTagToVersionNumber?

Я также пытался:

git.useGitDescribe: = true

git.formattedShaVersion := git.gitTagToVersionNumber.value("tag")
Docker / dockerAlias := DockerAlias(None, Some("zerocoder"), (packageName in Docker).value, git.gitDescribedVersion.value) 

Но он не дает желаемого значения.Я хотел бы пометить мой докер контейнер, например:

v0.2.0-2-g8d5cd83

1 Ответ

2 голосов
/ 14 июня 2019

Это пример использования GitTagToVersionNumber:

git.useGitDescribe := true
git.gitDescribePatterns := Seq("v*.*")
git.gitTagToVersionNumber := { tag :String =>

val branchTag = if (git.gitCurrentBranch.value == "master") "" else "-" + git.gitCurrentBranch.value
val uncommit = if (git.gitUncommittedChanges.value) "-U" else ""

tag match {
    case v if v.matches("v\\d+.\\d+") => Some(s"$v.0${branchTag}${uncommit}".drop(1))
    case v if v.matches("v\\d+.\\d+-.*") => Some(s"${v.replaceFirst("-",".")}${branchTag}${uncommit}".drop(1))
    case _ => None
}}

Не забудьте, что вам нужно создать тег типа v1.0 (git tag v1.0 в вашей текущей ветке), чтобы увидеть, как работает приведенный выше код, поскольку он читает его из git. Если вы тестируете это удаленно, не забудьте сделать git push --tags.

В приведенном выше примере указано:

  • версия, совместимая с semvar, например, 1.0.0 с второстепенными / основными секциями.
  • Git Sha для точного понимания того, что делает код. (исключая, где фактический тег применяется к текущему ша)
  • Основная часть v1.0 взята из созданного вручную тега, который вам нужно сделать, а последняя часть (например, .3 в 1.0.3-xxx) - из автоматического подсчета количества ваших коммитов из тега v1.0. , Поэтому он менее восприимчив к человеческой ошибке, чем пометка каждого отдельного выпуска.
  • Он добавляет -U, если git имеет модификации, и поэтому код не обязательно может быть восстановлен
  • добавляет имя ветви, если вы не в главной ветви.

Это полный рабочий пример: https://github.com/UKHomeOffice/rtp-email-lib/blob/68a2d6628d29b8b012a13b498320e11c2ac2aaa1/build.sbt, но, возможно, вы не включили плагин GitVersioning в части проекта build.sbt.

...