持续集成服务器初学者

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(登录并投票!)

【讨论】:

以上是关于持续集成服务器初学者的主要内容,如果未能解决你的问题,请参考以下文章

coding持续集成之自动发布

持续集成篇--Hudson持续集成服务器的安装配置与使用

Jenkins--持续集成服务器

Jenkins——持续集成介绍及Jenkins安装部署(插件+用户权限+凭据+Maven打包)

《持续集成实践指南》第2章 持续集成环境搭建Jenkins+Gitlab+Gerrit

持续集成与Devops关系