2016-04-24 43 views
0

当谈到释放我的生产服务器上的项目..可能是我只是没有足够的经验,我不喜欢,没有人教我如何做到这一点的正确方式。部署应用

现在我有几个阶回购(上喷雾的顶部)。我有一切在我的本地机器上构建和运行这些项目(当然,我开发它们)。所以在我的生产服务器上安装jenkins以便从git,构建和运行同步。它现在工作,但我不喜欢它,因为我需要在每台机器上安装jenkins,我想运行我的项目。如果我想将我的项目展示给我的咖啡馆朋友,该怎么办?

所以我配的想法:如果我构建的应用程序之前运行测试,使便携式版本(与SBT本地打包e.q.)并保存远程服务器“发布服务器”。该服务器只是让这些准备好被推出的应用程序。

然后我去生产服务器,运行bash脚本,从发布服务器下载可执行文件并运行我的项目的机器上

在未来,我想:

  1. 下载并运行项目搬运工容器内。
  2. 保持随时可以提供静态文件的前端。运行搬运工 容器nginx的和链接体积静态文件

我听到关于Nexus(http://www.sonatype.org/nexus/),即艺术家使用,以节省他们的歌曲,图片,等等。我认为应该有暴露的想法像我

任何帮助表示赞赏开源项目!

回答

1

在我看来,一种常见的反模式是在每次执行部署时都要构建软件。建议通过引入二进制存储库管理器来将构建过程与部署过程分离开来(“已经在这样的例子中提到,nexus)。

只有成功地建立测试推送到仓库,这样就可以把每个成功的构建作为一个小型的释放。这样做的一个副产品就是你的生产服务器不需要预先安装所有的构建软件(比如Jenkins,ANT,Maven等)。

需要注意的是,像NexusArtifactory这样的现代存储库管理器现在也支持Docker注册表,因此您也可以使用它们来部署Docker镜像。

更新

一个相关的厨师的问题,技术不存在中间二进制文件(如罐子)。在这种情况下,该软件仍然通过创建存储在回购中的tar分布来“释放”。

chef cookbook delivery - chef server vs. artifactory + berkshelf