使用 GitLab-CI 进行复杂构建的方法

Approach for using GitLab-CI for complex builds

我是持续集成的新手。我对能够测试我对代码所做的更改是否会破坏不同构建类型列表上的代码编译的系统感兴趣。

代码的属性(我称之为代码A): 1.) 依赖于 SUNDIALS 和 PETSC 等数值库 2.) 依赖于另外两个代码 (CodeB CodeC),它们本身依赖于 HDF5、MPI 等。

是否可以使用 GitLab 的 CI 功能来设置一个系统,该系统能够在具有不同系统风格的 Linux 机器上构建 CodeA(与 CodeB 和 CodeC 链接)( Ubuntu、OpenSuSe、RHEL、Fedora 等)?

我发现的大多数关于 CI 使用 GitLab 的例子都是类似测试 HelloWold.cpp 是否在行被更改时编译的事情。只是简单的构建,很少有外部依赖 management/integration.

听起来你在这里提出了一些非常好的问题。我会在看到它们时将它们分开,如果这完全回答了您的问题,请告诉我。

  1. 如何构建不同风格的 linux?
    • 我将采用的方法是使用评论中提到的 docker 文件。这允许您继续在 CI 系统中使用通用构建代理,但可以跨多个平台进行测试。
    • 另一种选择是查看您如何分发应用程序,看看是否可以使用 snap 包。这将使您不必担心要部署到的环境。
  2. 如何处理依赖关系?
    • 这是考虑工件存储库真正有用的地方。 jfrog's artifactory and sonatype's nexus 都在这里创造了奇迹。这将允许您为任何应用程序或库连接构建管道,并推送其他人可以使用的工件。这些可以使用您提供给构建的一组凭据来锁定。

希望对您有所帮助。