持续集成服务器初学者

时间:2011-07-08 19:34:58

标签: maven deployment jenkins nexus

我正在尝试设置一个完整的CI服务器,但我在某些方面很困难。

目前,我的系统工作如下:

  • 我在本地GIT存储库上提交本地更改,然后推送到CI服务器上的GIT存储库

  • 然后我有一个由SCM更改触发的jenkins工作,他运行一个干净的安装,并通过这样做执行我所有的Junit和Jstestdriver测试(通过本地jstd服务器)。此作业将快照工件部署到我的nexus存储库

  • 上的存储库
  • 我为jenkins安装了M2-release-plugin,并使用maven-release-plugin相应地设置了我的pom.xml。当我点击jenkins作业页面中的“执行maven发布”时,jenkins运行mvn release:prepare release:perform,从而在我的git repo(比如说v000001)中创建一个标签,并在我的nexus存储库中部署一个版本化的工件。

我真的不知道这个过程是否正常,但我猜是这样......

我的问题是我想在我的生产tomcat中在我的nexus repo(比如“artifact-v0000001.war”)中提供版本化工件。但我无法弄明白该怎么做。

当我执行“mvn release:prepare release:perform tomcat:deploy”时,它会部署构建的新SNAPSHOT工件......我不想这样做,我想重用nexus存储库中的工件。

有没有办法使用工具(maven / jenkins插件或外部)?

基本上,我想获取存储库中的最后一个发布工件,并将其发送到tomcat管理器以取消部署webapp。

我是否需要设置与发布作业分开的递送作业?

2 个答案:

答案 0 :(得分:0)

Jenkins,尤其是与ANT这样的工具结合使用时,几乎可以做任何事情。它有很多插件,您可以随时编写脚本并将其合并到Jenkins构建中。目前,我使用Jenkins将Web应用程序部署到Windows IIS服务器。你可以在这里做的是有一个Jenkins构建,它在源代码控制部分设置了你的SVN路径,以便在你触发构建时获取最新版本。从那里编写一个ANT脚本应该是相当简单的,该脚本通过Tomcat中的现有JAR复制它,它会自动重启它。

答案 1 :(得分:0)

您的问题是您可能正在使用Jenkins版本插件,而不是“m2 release plugin”。标准插件的问题在于它执行常规构建,保存工件,然后执行发布。然后,它将尝试部署它从常规构建中创建的错误工件。

m2版本插件解决了这个特殊问题。这个问题有一些棘手的解决方法,但这就是它实现此功能的时刻:https://issues.jenkins-ci.org/browse/JENKINS-11120(登录并投票支持!)