如何使用"trusty"映像在本地执行C++程序的Travis CI?

How to execute Travis CI of a C++ program locally with a "trusty" image?

本文关键字:程序 C++ CI 执行 Travis trusty 何使用 映像      更新时间:2023-10-16

我熟悉CI,但这是我第一次与Travis CI(和docker)打交道。我有一个 github 项目,我想在本地运行.travis.yml。让我们以这个项目为例。

看看这个问题和这篇文章,我看到使用 docker 可以在本地执行,但它取决于编程语言。我安装了 docker,但我在选择 docker 映像时遇到问题,因为手头的项目附近没有"C++映像"或"可信映像"或任何我看到的内容。

我应该选择什么图像?我是否从错误的角度看待这个问题,因为C++在某种程度上是一个系统组件,不像那些带有脚本语言(Python、Ruby 等)的图像?请指教。

我是这个问题的提问者,以下是我从这段旅程中学到的东西。

不要浪费时间试图让travis CI在本地工作。你非常幸运地让travis-build(这是将travis脚本转换为bash的库)对你来说没有任何问题。但并非必须如此。对我来说,我突然遇到了 ruby 库错误并且无法调试它(也许这是我的 ruby 无知,但这取决于你想在调试 travis-build 上投入多少资金,如果可以的话,因为我的错误似乎不是我可以修复的)。

底线是:只需在 github 上创建一个新分支并将您的工作推送到它以测试您的更改,然后删除该分支。

我用来封装测试过程并能够在本地测试它的一种方法是,我不只使用 travis 进行测试,而是在 travis 脚本中使用另一组 Python 脚本(或您喜欢的脚本语言)。这样,您可以使用这些脚本手动测试复杂的逻辑,然后在 travis 脚本中执行以下操作:

install:
- python tests/install_ubuntu_packages.py
script:
- python tests/test_daemon_compile.py
- python tests/test_gui_compile.py

这些脚本可以在 docker 中单独运行,超级干净,在新环境中,它们可能包含需要在本地测试的复杂逻辑。但是 travis 脚本本身非常简单,不值得在本地测试。

如何使用 Trusty 图像在 https://docs.travis-ci.com/user/common-build-problems/#Troubleshooting-Locally-in-a-Docker-Image 中进行了解释。

在选择图像时,我浏览了 https://quay.io/travisci,发现te-main是定期构建的(截至 2018/01/23)。我会选择te-main,因为这可能是最接近c/c ++的。在该图像上运行lsb_release -a,我得到

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

确认图像基于trusty