【问题标题】:Publish RPM to remote YUM repository with SBT使用 SBT 将 RPM 发布到远程 YUM 存储库
【发布时间】:2015-12-01 11:52:29
【问题描述】:

在我们的团队中,我们构建了包含我们的应用程序的 RPM 文件,然后我们有一个 bash/cURL 脚本将其发布到远程 YUM 存储库。本质上它是一个带有表单数据的 HTTP POST:

curl ${curl_opts} -F "rpm=@$RPM;type=application/x-redhat-package-manager"

现在我想用 SBT 替换这个脚本,因为从部署的角度来看它不方便。我试图找到一些可以为我处理这个问题的 SBT 插件,但无济于事。有这种事吗?

附:我想,另一种方法是直接从 SBT 执行此类 HTTP POST,但这将是另一个问题。

【问题讨论】:

  • 我相信你可以通过scala-sbt.org/0.13/docs/Process.html直接从sbt调用curl然后你可以把它变成一个自定义任务,甚至制作你自己的插件。
  • 这意味着 curl 已安装在该机器上,但不一定如此。我想将构建系统的依赖降至最低。

标签: scala sbt rpm yum


【解决方案1】:

您可以使用 SBT Native Packager (RPM) 生成 RPM 并配置 sbt-package-courier 以部署到您的存储库。

在你的 plugins.sbt 文件中添加:

addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.3.4")
addSbtPlugin("io.sysa" % "sbt-package-courier" % "0.2.0")

然后发布:

enablePlugins(RpmArtifactoryDeployPlugin)
rpmArtifactoryUrl in Rpm := "https://repo.acme.corp/artifactory"
rpmArtifactoryCredentials in Rpm := Some(Credentials(Path.userHome / ".ivy2"/ ".credentials"))
rpmArtifactoryRepo in Rpm := "rpm-repo"
rpmArtifactoryPath in Rpm := s"pool/${packageName.value}"
publish in Rpm := (rpmArtifactoryPublish in Rpm).value

最后

sbt rpm:publish

我相信你已经完成了包装部分。

【讨论】:

    猜你喜欢
    • 2015-03-29
    • 2012-06-24
    • 2017-07-04
    • 2012-10-09
    • 2011-02-28
    • 2016-05-30
    • 2019-04-03
    • 1970-01-01
    • 2014-09-24
    相关资源
    最近更新 更多