2014-10-19 493 views
1

我的问题可能并不重要,但我还没有找到任何有意义的答案。从Maven存储库到部署服务器的部署

我有构建和部署到Maven存储库的多模块应用程序。现在,我想有一个框架/脚本将由詹金斯/竹被触发,将执行以下操作:从Maven仓库

  1. 取已建成并签名的申请文物
  2. 部署他们在远程服务器上使用给定一套规则/ CONFIGS的
  3. 部署依赖关系以及
  4. 形式启动脚本的应用的正确的类路径

途径我见过的自包含的设置庆典S的cripts,但问题始终是依赖关系。由于依赖关系已经是pom.xml的一部分,我不想再声明它们的脚本集。

理想情况下,我想重新使用相同的pom.xml将依赖关系和工件下载到服务器。此外,我正在寻找基于Puppet的更多或更少的标准部署。

我有两个限制:

  1. 基于Maven的部署不工作,因为我想能够同时部署应用程序(我)和Maven的回购第三方文物。
  2. 大厦罐子与 - dependeincies使用汇编插件是不是一种选择,以及

能否请您提出好的建议?

谢谢!

+0

为什么部署无法工作,因为你有第三方DEPS?那么问题出在哪里呢? – khmarbaise 2014-10-19 17:13:01

+0

考虑到下面的帐户建议,也许我不确定如何正确使用它。 我的意思是我想在部署之前每次都省略构建项目 – 2014-10-20 06:05:15

+0

@AntonPolyakov请参阅[我的答案](http://stackoverflow.com/a/26452864/1744774)。那里没有建筑物。 – 2014-10-22 16:50:03

回答

2

这是我会做的:

你说得对,maven已经拥有了所有的依赖信息。我会添加一个额外的Maven模块,这将取决于所有其他模块,所以Maven最后运行它。我还将在只有您的CI服务器运行的配置文件下定义此模块。

在这个模块中,我会使用一个自定义的maven插件,或者使用maven groovy插件和一些(inline?)Groovy代码来生成您的部署脚本。这两种方法让你获得行家项目模型,里面有所有的依赖

+0

嗨!谢谢。所以,如果我理解正确,你的新mvn模块将建立在CI服务器上,那么它可以打包并捆绑到prod服务器。这是怎么回事? – 2014-10-20 06:10:05

+0

@AntonPolyakov - 这个额外的Maven模块可以生成部署脚本,然后jenkins可以使用后构建作业运行,或者可以执行实际部署(您可以将jenkins上的env vars设置为配置) - 取决于你想怎么做。 – radai 2014-10-20 07:12:11

1

我倒是:

  1. 使服务器詹金斯节点(JVM和slave.jar是所有你需要为)
  2. 创建配置为在特定服务器上运行的“建立运行时环境”作业(使用1。又名詹金斯节点或奴隶然后)
    1. 定义在这些工作的脚本,在服务器上运行,那么,做你的东西有
    2. 或更好,避免脚本,mavenize它:
      1. 在服务器上安装Maven
      2. 打造“建立运行环境”的服务器上的POM其中:
        1. 下载运行时工件从你的资料库(包括<依赖>)
        2. 建立并相应地配置运行时环境
+0

谢谢,如果您直接从Jenkins访问您的服务器,这听起来像是一种方法。如果你不这样做? – 2014-10-20 06:08:38

+0

@AntonPolyakov:建立访问权限。 ;-)你是什么意思“如果你不?”?你在你的问题中写了“2.在远程服务器上部署它们”和“3.部署依赖关系”。你必须有某种访问权限来部署其他的东西。 – 2014-10-22 16:51:21