【问题标题】:Subversion property to JAR/WAR manifest in JenkinsJenkins 中 JAR/WAR 清单的颠覆属性
【发布时间】:2012-11-30 18:05:39
【问题描述】:

在使用 Jenkins 和 Maven 构建 Java JAR/WAR 时,是否可以让 SVN 属性信息(特别是 svn:mergeinfo)出现在 MANIFEST.MF 中?

我有一个设置,我们从主干合并到发布分支,以便使用目标环境的正确配置文件启动 Jenkins 构建 - 我们正在努力实现持续发布。

我希望能够通过检查 Tomcat webapp 中的清单来了解当前在服务器上部署了哪个主干修订版。 svn:mergeinfo 属性似乎对此很有用,但如果有更好的方法,我愿意接受其他选择。

注意:分支可能自上次部署以来已经更新,所以我不能依赖分支中属性的当前值(这是我目前的方法)。

【问题讨论】:

  • 我认为,subwcrev(或者它的 Linux 兄弟)的方式会更正确,如果 Jenkins 可以在任务中运行它
  • 有趣。如果我可以使用预构建步骤来运行检索属性的脚本,然后将其传输到构建可以访问的变量。

标签: java svn properties jenkins manifest


【解决方案1】:

当您将子树与子树合并时,svn:mergeinfo 将出现(更新)在合并目标的根(在您的情况下为分支目录),而不是目标内的任何对象中。

也就是说,你可以

  • 获取合并信息
  • 使用此新数据更新内部任何对象的属性

但不是在merge的时候,存储变化的数据会在merge-commit之后额外提交到branch

插件

发现(偶然)新的 svn 命令和获取最新版本的最简单方法,并合并到 TARGET。

svn mergeinfo FROM TO 将显示所有修订列表,从 FROM 合并到 TO。 mergeinfo | tail -1 将被最新合并

【讨论】:

  • 这很有帮助,因为它解释了我在合并时看到的内容。似乎使用合并提交提交更新的属性(如果不是我可以提交两次,那没问题)。我不清楚如何从这里开始在构建时公开该属性,但您对 subwcrev/brother 的评论很有趣。
  • @Carboni - “在构建时公开属性”的主要问题是“你如何构建” - 来自分支的 Jenkins WC(或直接来自 repo 的cat?),在 Repo 主机上或偏僻的?根据答案,您可以调用构建时间:subwcrev(用于 WC 源)、svn info <SRC>(带有后解析)(用于 WC 和 Repo-URL)、svn log -l 1 --xml
  • 我们正在从 Jenkins 工作副本构建。 Jenkins 与存储库位于不同的主机上。我已经尝试过 svn info host/svn/folder 和 svn log -l 1 --xml 但它们似乎没有为我提供访问 svn:mergeinfo 的有用信息。
  • 所以我四处寻找并想出了:svn propget -r HEAD svn:mergeinfo,它会打印出我需要的信息。现在,将其纳入构建步骤并将输出捕获为变量将是答案。
  • @Carboni - 好吧,请等一下:如果你合并(所有修订版)从主干(从第一个未合并到最新的主干),你为什么害怕使用 主干的最新修订号?!
猜你喜欢
  • 2013-06-10
  • 2012-08-29
  • 2021-05-29
  • 1970-01-01
  • 2010-11-10
  • 2022-12-23
  • 2015-10-01
  • 2017-08-18
相关资源
最近更新 更多