我目前正在建立一个持续集成系统,它运行良好。这就是它目前的样子
Tomcat7 with
|- Sonar
|- Jenkins (latest LTS version)
| |- Maven Build
| | - mvn clean install
| | - mvn site-deploy
| | - sonar analysis
|- Site for the Maven Build
这使得一个有效的构建包括通过tomcat提供mvn site
的结果。
但是,将站点报告推送到tomcat中的正确位置只能 ,因为我在pom.xml中硬编码file://path/to/tomcat/webapps/site/
,如
<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:
是否有更好的方式来提供网站报告,最好不安装单独的网络服务器?
答案 0 :(得分:0)
我终于找到了解决这个问题的方法。
问题1:
我使用jenkins中maven作业可用的设置玩了一下,发现确实可以通过${CATALINA_HOME}
然后由Jenkins扩展。
但是,这个系统是安装在Windows机器上的,${CATALINA_HOME}
路径中的反斜杠似乎在某处被吞下,因此无法完成这项任务。
<强>解决方案:强>
在tomcat的sentenv.bat
中我添加了:
set SITE=C:/Program Files/apache-tomcat-7.0.42/webapps/site
的相应部分是:
<distributionManagement>
<site>
<id>local</id>
<name>local</name>
<url>file://${local.site.dir}/RIAS/</url>
</site>
</distributionManagement>
jenkins的工作然后将两者结合起来:
然后将这些“属性”传递给maven -Dlocal.site.dir=<resolved expression>
<强>结论:强>
在Linux系统上设置额外的$ {SITE}似乎是多余的。一旦吞咽反斜杠消失,对于Windows系统也是如此。不幸的是,我不知道吞咽发生在哪个地方。
此外,这将CI系统的配置与pom中的规范分离。
欢迎任何进一步的讨论和评论。