我正在尝试设置一个完整的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。
我是否需要设置与发布作业分开的递送作业?
答案 0 :(得分:0)
答案 1 :(得分:0)
您的问题是您可能正在使用Jenkins版本插件,而不是“m2 release plugin”。标准插件的问题在于它执行常规构建,保存工件,然后执行发布。然后,它将尝试部署它从常规构建中创建的错误工件。
m2版本插件解决了这个特殊问题。这个问题有一些棘手的解决方法,但这就是它实现此功能的时刻:https://issues.jenkins-ci.org/browse/JENKINS-11120(登录并投票支持!)