Я использую плагин sbt-release
для нескольких проектов.Один шаг, который я использую, - docker:publish
для sbt-native-packager
, чтобы передать изображение в концентратор Docker.
sbt-native-packager
использует параметр dockerUpdateLatest
, чтобы решить, обновлять ли тег latest
.По умолчанию false
, и если true
, он обновит latest
.
Для одного проекта, у которого нет подпроектов под root, я могу использовать пользовательский ReleaseStep
дляизменить эту настройку в зависимости от того, выпускаю ли я SNAPSHOT
, т.е. я не хочу обновлять тег latest
, если версия заканчивается на SNAPSHOT
.
lazy val setDockerReleaseSettings = ReleaseStep(action = oldState => {
// dockerUpdateLatest is set to true if the version is not a SNAPSHOT
val extracted = Project.extract(oldState)
val v = extracted.get(Keys.version)
val snap = v.endsWith("SNAPSHOT")
if (!snap) extracted
.appendWithSession(Seq(dockerUpdateLatest := true), oldState)
else oldState
})
Вышеуказанное работает для этого проекта.
Для другого проекта есть несколько проектов, объединенных под root.Я хотел бы сделать что-то вроде
lazy val setDockerReleaseSettings = ReleaseStep(action = oldState => {
// dockerUpdateLatest is set to true if the version is not a SNAPSHOT
val extracted = Project.extract(oldState)
val v = extracted.get(Keys.version)
val snap = v.endsWith("SNAPSHOT")
if (!snap) extracted
.appendWithSession(Seq(dockerUpdateLatest in api := true, dockerUpdateLatest in portal := true), oldState)
else oldState
})
Но, похоже, не работает.Я тоже пробовал dockerUpdateLatest in Global
и dockerUpdateLatest in root
безрезультатно.Есть идеи, как изменить dockerUpdateLatest
в этих подпроектах?