Опубликовать пакет Debian в Artifactory с помощью sbt

Я использую sbt-native-packager для создания и публикации пакетов Debian для моего проекта Scala Play 2 в репозиторий Artifactory.

Пока что я могу сгенерировать пакет .deb, но мне не удается опубликовать его по артефактному URL-адресу. Единственный артефакт, который публикуется, — это файл .changes debian, но не настоящий файл .deb.

Недавно я обновился до Play 2.3.2, который использует sbt 0.13.5 и sbt-native-packager 0.7.4. Это может быть связано с тем, что публикация файла .deb в артефакте работала с sbt-native-packager 0.7.1.

Я очень старался понять проблему и понял, что в последней версии мне пришлось добавить debianChangelog in Debian := Some(file("src/debian/changelog")) в мой файл .sbt, но теперь я застрял.

Моя проблема просто в том, что файл .deb не публикуется, когда я делаю debian:publish. Публикуется только файл .changes:
[info] published atk to http:...:8081/artifactory/atk-snapshots/atk/atk/1.0-SNAPSHOT/atk-1.0-SNAPSHOT.changes

Кто-нибудь знает, что мне делать, чтобы решить мою проблему с публикацией?

У меня есть следующие настройки в качестве импорта и версий в файле .sbt проекта:

import com.typesafe.sbt.SbtNativePackager._
import com.typesafe.sbt.SbtNativePackager.NativePackagerKeys._
import com.typesafe.sbt.packager.archetypes.ServerLoader.SystemV
import NativePackagerKeys._

name := """atk"""

scalacOptions += "-target:jvm-1.7"

javacOptions ++= Seq("-source", "1.7", "-target", "1.7")

version := "1.1-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.1"

И для упаковочной части:

// Packaging info

debianChangelog in Debian := Some(file("src/debian/changelog"))

serverLoading in Debian := SystemV

packageDescription in Debian := "Parlis Elvis Adapter"

packageSummary in Debian := "Parlis Elvis Adapter"

maintainer in Debian := "Daan Hoogenboezem"

daemonUser in Linux := "ape"

daemonGroup in Linux := "ape"

sourceDirectory in Debian <<= (sourceDirectory) apply (_ / "debian")

mappings in Universal <+= (packageBin in Compile, sourceDirectory ) map { (_, src) =>
    // we are using the reference.conf as default application.conf
    // the user can override settings here
    val conf = src / "linux" / "atk" / "startup.conf"
    conf -> "etc/atk/startup.conf"
}

linuxPackageMappings in Debian <+= (name in Universal, sourceDirectory in Debian) map { (name, dir) =>
  (packageMapping(
    (dir / "etc/changelog") -> "/usr/share/doc/atk/changelog.gz"
  ) withUser "root" withGroup "root" withPerms "0644" gzipped) asDocs()
}

defaultLinuxLogsLocation in Linux := "/var/log/atk"

deploymentSettings

// Publishing
publishTo := {
  val artifactory = "http://...:8081/artifactory/"
  if (version.value.trim.endsWith("SNAPSHOT"))
    Some("snapshots" at artifactory + "atk-snapshots")
  else
    Some("releases" at artifactory + "atk-releases")
}

publish in Debian <<= (publish in Debian).triggeredBy(publish in Compile)

person Krijn    schedule 10.08.2014    source источник
comment
Мой первоначальный ответ был неправильным. Настройка присутствует. У меня на Нексусе работает :(   -  person Muki    schedule 03.09.2014


Ответы (1)


Мой коллега показал мне исправление, которое задокументировано здесь: http://www.scala-sbt.org/sbt-native-packager/DetailedTopics/deployment.html?highlight=publish

Короче говоря, в build.sbt нужно добавить следующее утверждение:

makeDeploymentSettings(Debian, packageBin in Debian, "deb")
person Krijn    schedule 07.01.2015