使用omnibus构建工具打包完整的应用程序

时间:2015-10-01 19:53:17

标签: ruby chef bundler ls gitlab-omnibus

所以我的任务是打包一个Ruby应用程序。我们的想法是消除apt-get任何包或gem安装任何东西的需要。包裹是包罗万象的。

我已经找到了Omnibus(还有fmp-cookery,但它似乎并不为人所知)

我已经找到了综合项目的一般结构,但现在遇到了具体问题:

1)我有一堆与主厨AT INSTALL TIME一起运行的收件人。这些设置了DB和nginx配置。什么是在目标机器上运行这些的最佳方法?

2)我在构建脚本中添加了一个bundle install行,但现在这复杂了我的要求。例如nokogiri安装两次。曾经作为我的实际项目Gem和另一次作为omnibus的另一个要求。那么我最终在/#{instal_dir} / embedded / bin中有两个二进制文件,在$ {install_dir} / embedded / lib / ruby​​ /.../ gems中有一个二进制文件以任何方式阻止它?

1 个答案:

答案 0 :(得分:-2)

构建安装程序比创建厨师食谱更复杂。 用户需要为每个模块编写DSL(这有关于收集工件并将其安装在特定操作系统上的说明)。

创建综合项目后,请参阅自述文件以开始使用基础知识。

有关如何构建自己的DSL的详细信息,请参阅此github项目。 Gitlab omnibus项目为某些模块提供了DSL,如postgresql等。

https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master

用于在安装程序中嵌入nginx模块的示例DSL如下所示:

name" nginx" default_version" 1.9.10"

依赖" pcre" 依赖" openssl"

来源网址:" http://nginx.org/download/nginx-# {version} .tar.gz",        md5:" 64cc970988356a5e0fc4fcd1ab84fe57"

relative_path" nginx - #{version}"

构建做   命令[" ./ configure",            " - 前缀=#{INSTALL_DIR} /嵌入&#34 ;,            " - 与-http_ssl_module&#34 ;,            " - 与-http_stub_status_module&#34 ;,            " - 与-http_gzip_static_module&#34 ;,            " - 与-http_v2_module&#34 ;,            " - 用的IPv6&#34 ;,            " - 与调试&#34 ;,            " - 与-LD-OPT = -L#{INSTALL_DIR} /嵌入/ lib中&#34 ;,            " - with-cc-opt = \" -L#{install_dir} / embedded / lib -I#{install_dir} / embedded / include \""]。join( "")   命令" make -j#{workers}",:env => {" LD_RUN_PATH" => "#{INSTALL_DIR} /嵌入/ lib中"}   命令" make install" 端