2017-03-20 127 views
1

我正在学习詹金斯。有人能告诉我,如果我的理解是正确的吗?詹金斯构建和部署

构建应用程序:

  • 我承诺我的代码,并把我支到我的远程仓库。
  • Jenkins看到我的提交并触发了构建(可能使用maven安装)。
  • 詹金斯运行所有测试,如果全部通过,则会创建战争/耳朵。这种人为现象被推向联系。

要部署到环境:

  • 一个部署脚本在我的分支包含步骤来部署应用程序,比方说,Tomcat的。 Jenkins去Nexus,检索最新的artefact(上面构建),并将这个应用程序部署到Tomcat。
  • 部署文件中的其他步骤根据需要关闭并重新启动Tomcat,可能进行测试以确保应用程序已启动并准备好为请求提供服务。

我是否正确地说,部署不需要构建最新的人造物,它使用推到Nexus的最后一个,还是每个部署都构建的新部件?

+0

快速解释 - 你创建一个PR - > Jenkins运行所有测试 - >合并PR按钮可用于审阅者如果构建成功 - > PR获取合并 - >快照获取生成nexus->现在你测试快照在UATE或者如果功能测试良好的话,可以预先生成 - >然后将释放切换到联结。 – Shek

+0

取决于您的案例,也许您正在使用Maven或Gradle构建您的项目。这些工具已经有部署在nexus上的任务,可以使用/ target路径上生成的实际工件将工件部署到生产环境中。 – CleitonCardoso

+0

新构建仅在新的成功PR合并时生成。 – Shek

回答

1

这一切都是根据你如何在Jenkins和/或git上建立你的构建。

Jenkins可以配置为监视您的存储库(简称repo),并在检测到更改时启动构建。

Jenkins可以配置为运行构建。您提供了Maven命令行参数;詹金斯只是编排你给它的命令。

您提供Jenkins的一些步骤将是shell代码。这就是你如何运行定制shell脚本,比如说访问Nexus。事情不会自行发生;如果您告诉Jenkins部署工件,比如说使用Maven,那么Jenkins将按照您的要求调用部署指令。

应用程序部署谴责启动,重新启动或关闭服务器(Tomcat)的责任非常不规范。当然,这可以通过Jenkins来完成,但它的应用程序部署应该具有更高的“薪酬等级”。把事情简单化;如果您的Jenkins版本正在管理用于测试和部署的应用程序,请将其重点放在应用程序上,而不要放在服务器上。

詹金斯是神奇的,但它不是一个心灵读者。除非你告诉它,它不会做你说的任何事情。也就是说,你所描述的过程是合理的,无论你用什么工具来制定它。詹金斯当然可以做这些事情,如果你相应地设置它。

+0

我的项目中有一个deploy.sh文件。这包含构建和部署代码的步骤。我猜詹金斯读这个文件。但是Maven在哪里进入它? – TheCoder

+0

您可以执行maven,gradle,ant任务或/并且您可以运行执行大量任务的shell脚本。你的deploy.sh可以完全独立于maven。 – 7663233

+0

詹金斯是Maven意识到与正确的插件。我不会将所有内容都塞进一个'deploy.sh'脚本中。让詹金斯为你处理一些样板。 –

0

总的来说,你是对的。

詹金斯可以量身定制基本上做任何事情(在合理范围内)。有很多东西可以配置。 作业可以通过手动轮询存储库来启动,通过钩子和计时器。例如,许多工作场所不再采用旧的轮询策略,而是使用新的git-hooks。Jenkins可以执行启动/停止应用程序服务器的shell脚本,但正如前面的海报所写,最好让Jenkins简单一些,专注于擅长什么,运行测试工作,构建东西,部署东西。让其他人处理服务器。

+0

让其他人处理服务器 - 谁? – TheCoder

+1

你知道,有时你写东西,你意识到这看起来很奇怪。添加您的评论让我更深入地了解我们的构建系统。唉,我们的Jenkins工作停止我们的服务部署工件,然后再次启动服务。所以我在这里做了180分钟:)所以谢谢你的问题:) – 7663233