管理多个项目的元构建解决方案

时间:2017-10-22 12:36:34

标签: deployment build install environment build-system

我正在寻找有关在几天搜索过程中没有引起我注意的软件的建议。

是否有任何软件解决方案可以同时部署多个项目,这些项目在源代码构建包管理器级别(如portsportagesnix)运行,但是可以在当地居住?

至于细节,我们几乎没有松散连接的软件项目,具有以下特征:

  • 项目主要使用C / C ++和Python编写,但更多语言表示为次要混合(Haskell,Rust,Perl)
  • 项目在git superprojects内组合在一起,并针对特定环境仔细调整某些构建/部署预设(并通过类似布尔选项的子集进行特定用途)
  • 我们已经为C ++项目完成了精心设计的CMake构建脚本,这些脚本支持选项,构建配置,导出目标等等。现在切换它会很昂贵。
  • 我们被迫处理各种Linux发行版(从Gentoo和Ubuntu到Debian和CentOS)。

我们需要针对各种环境的统一构建和部署工具。 CMake与非编译语言不能很好地集成(例如,本身不通过virtualenv支持本地Python安装)。

我不想改变我们已经开发的东西,而是希望以OS包管理器的方式使用它们。对于我的愿景,它应该与所谓的meta-build tool非常相似。事实上,Gentoo Portages非常接近:

  • 使用简单的布尔选项(useflags,profiles)轻松定制
  • 将建筑程序委托给可靠且可定制的工具,特别是为此目的设计和测试(CMake,autotools,Bazel等)
  • 提供更改目标编译器安装的功能,并使用标准化指令集以明确的声明方式指定构建过程。 但Portage不能在本地运行(并且还有其他不相关的缺陷)。

在将整个构建系统转换为MesonBazel之类的内容之前,我必须变得非常自信。或者我现在能找到的任何其他内容。

更新

更具体地说,我可以参考我们目前所做的事情。我们正在维护的超级项目的one处理特定的科学实验:

  • 所有子项目都是listed作为git子模块
  • 维护整个build-install-deploy生命周期的简单BASH-script
  • 引用具体环境的特定设置的预设表示为BASH sources,并包含在此维护shell脚本中。

由于这些shell脚本活动已经获得的经验,我提出了根据我们已经获得的经验编写自己的解决方案。

2 个答案:

答案 0 :(得分:1)

对于类似的任务Bob是在不久前开发的。如果你仍然需要一个构建系统,那么值得一看。有一些小的教程可用,以及一个复杂的基础示例从头开始构建一个linux。

基本上它只是一个受控执行bash脚本的环境,具有依赖性和变体处理,CI集成,IDE支持,..

答案 1 :(得分:0)

查看Sparrow - Linux脚本平台,它支持项目层次结构和任务 - 可配置脚本,其中配置以Yaml,Json格式以声明方式进行。这有望解决许多(如果不是全部)你在这里提到的需求。

披露 - 我是工具作者。