持续集成服务器初学者
Posted
技术标签:
【中文标题】持续集成服务器初学者【英文标题】:Continuous integration server beginner 【发布时间】:2011-07-08 19:34:58 【问题描述】:我正在尝试设置一个完整的 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 存储库中的版本化工件(比如“artifact-v0000001.war”)。但我不知道该怎么做。
当我执行“mvn release:prepare release:perform tomcat:deploy”时,它会部署构建的新 SNAPSHOT 工件......我不想这样做,我想重用来自 nexus 存储库的工件。
有没有办法使用工具(maven/jenkins 插件或外部)来做到这一点?
基本上,我想获取存储库中的最后一个发布工件,并将其发送到 tomcat 管理器以重新部署 webapp。
我是否需要设置与发布作业分开的交付作业?
【问题讨论】:
想要自动部署每个成功的构建吗?或仅来自 repo 的最新版本(不是自动的,而是取决于您的决定) 我只想在发布时部署(提交到 SCM 并创建标签,然后将工件上传到我的 nexus 存储库)。 【参考方案1】:Jenkins,尤其是与 ANT 之类的工具结合使用时,几乎可以做任何事情。它有很多插件,您可以随时编写脚本并将其合并到 Jenkins 构建中。目前,我使用 Jenkins 将 Web 应用程序部署到 Windows IIS 服务器。您可以在这里做的是在源代码控制部分设置您的 SVN 路径的 Jenkins 构建,以便在您触发构建时获取最新版本。从那里编写一个 ANT 脚本将其复制到 Tomcat 中现有的 JAR 上应该相当简单,这将自动重新启动它。
【讨论】:
【参考方案2】:您的问题是您可能使用的是 Jenkins 发布插件,而不是“m2 发布插件”。标准插件的问题在于它执行常规构建,保存工件,然后执行发布。然后它将尝试部署它从常规构建中创建的错误工件。
m2 发布插件解决了这个特殊问题。这个问题有一些棘手的解决方法,但在此功能实施之前,目前情况就是这样:https://issues.jenkins-ci.org/browse/JENKINS-11120(登录并投票!)
【讨论】:
以上是关于持续集成服务器初学者的主要内容,如果未能解决你的问题,请参考以下文章
Jenkins——持续集成介绍及Jenkins安装部署(插件+用户权限+凭据+Maven打包)