как изменить настройку подпроекта на шаге sbt-release - PullRequest
0 голосов
/ 26 июня 2019

Я использую плагин 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 в этих подпроектах?

1 Ответ

0 голосов
/ 26 июня 2019

Был в состоянии решить это с set every dockerUpdateLatest := true. Я сделал собственный ReleaseStep примерно так

lazy val createSetDockerUpdateLatestCommand = ReleaseStep(action = state => {
  // dockerUpdateLatest is set to true if the version is not a SNAPSHOT
  val snap = Project.extract(state).get(Keys.version).endsWith("SNAPSHOT")

  val setDockerUpdateLatest = if (!snap)
    Command.command("setDockerUpdateLatest") {
      "set every dockerUpdateLatest := true" ::
      _
    }
  else
    Command.command("setDockerUpdateLatest") {
      "" ::
      _
    }

  state.copy(definedCommands = state.definedCommands :+ setDockerUpdateLatest)
})

Тогда я бегу setDockerUpdateLatest

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