1

我目前正在建立一个持续集成系统,它运行良好。这就是它目前的样子

Tomcat7 with  
|- Sonar  
|- Jenkins (latest LTS version)
|  |- Maven Build  
|     | - mvn clean install
|     | - mvn site-deploy
|     | - sonar analysis
|- Site for the Maven Build

这使得工作构建包括mvn site通过 tomcat 提供结果。

但是,将站点报告推送到 tomcat 中的正确位置是因为我file://path/to/tomcat/webapps/site/在 pom.xml 中进行了硬编码,例如

<distributionManagement>
    <site>
        <id>local</id>
        <name>local</name>
        <url>file://path/to/tomcat/webapps/site/</url>
    </site>
</distributionManagement>

问题:
这将 maven 配置与 CI 服务器上的 tomcat 位置严重耦合,我认为应该避免这种情况。

问题1:
我可以以某种方式将 $CATALINA_HOME 传递给 jenkins 启动的相应 Maven 任务吗?

问题 2:
是否有更好的方法来提供站点报告,最好不安装单独的网络服务器?

4

1 回答 1

0

我终于找到了解决这个问题的方法。

问题 1: 我在 jenkins 中对 maven 作业可用的设置进行了一些尝试,发现确实可以通过${CATALINA_HOME},然后由 Jenkins 扩展。

但是,该系统安装在 Windows 机器上,路径中的反斜杠${CATALINA_HOME}似乎在某处被吞没,因此这不起作用。

解决方案:

  • sentenv.bat我添加的tomcat中:

    set SITE=C:/Program Files/apache-tomcat-7.0.42/webapps/site  
    
  • 在 pom 中对应的部分是:

    <distributionManagement>
      <site>
        <id>local</id>  
        <name>local</name>  
        <url>file://${local.site.dir}/RIAS/</url>  
      </site>  
    </distributionManagement>
    
  • 然后詹金斯的工作将两者结合起来: 在此处输入图像描述

然后将这些“属性”传递给 maven-Dlocal.site.dir=<resolved expression>

结论:
在 linux 系统上设置额外的 ${SITE} 似乎是多余的。一旦反斜杠的吞咽消失了,Windows 系统也是如此。不幸的是,我不知道吞咽发生在哪个地方。

此外,这将 CI 系统的配置与 pom.xml 中的规范解耦。

欢迎任何进一步的讨论和评论。

于 2013-07-22T10:49:44.247 回答