【问题标题】:Approach for using GitLab-CI for complex builds使用 GitLab-CI 进行复杂构建的方法
【发布时间】:2017-04-24 19:11:16
【问题描述】:

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

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

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

我发现的大多数使用 GitLab 进行 CI 的示例都是测试 HelloWold.cpp 是否在其上的行发生更改时编译。只需简单的构建,外部依赖管理/集成很少。

【问题讨论】:

  • 这里是关于跨项目依赖的指针stackoverflow.com/questions/43311196/…
  • CodeB和CodeC不是git仓库形式的情况怎么办?
  • 您是指在 Web 服务器上公开可用的 tar/zip 存档吗?还是别的什么?
  • 我会有 CodeB 和 CodeC 的 tar 文件,但它们在 Web 服务器上不公开可用。由于专有/安全问题,它们没有公开列出。根据我的阅读,我需要一台运行 GitLab 运行程序的本地机器,以便控制我想在其上测试 CodeA 的 Linux 版本。这台机器位于我们 scp 文件的内部网络上。这些信息有用吗?
  • 是的,这很有帮助,我认为您想要实现的目标绝对是可行的。

标签: continuous-integration gitlab gitlab-ci


【解决方案1】:

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

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

我希望这会有所帮助。

【讨论】:

  • 我遇到的问题是获取不同发行版的 Docker 映像可能存在困难。似乎只有少数图像可供公众使用。我不确定是否有更多可供 Docker 付费客户使用。
  • 您可以走创建自己的基础映像的路线。 docs.docker.com/engine/userguide/eng-image/baseimages
猜你喜欢
  • 2016-02-25
  • 2021-10-31
  • 2015-10-07
  • 2018-08-22
  • 2018-07-24
  • 2014-09-16
  • 1970-01-01
  • 2022-01-17
  • 2018-03-09
相关资源
最近更新 更多