如何使用"trusty"映像在本地执行C++程序的Travis CI?
How to execute Travis CI of a C++ program locally with a "trusty" image?
我熟悉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
- Mongodb c++驱动程序:如何查询元素的数组
- C++,系统无法执行指定的程序
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 重载操作程序时出错>>用于类中的字符串 memebr
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 试图在visual studio上用C++创建一个桌面应用程序
- 模板元程序查找相似的连续类型名称
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 如何通过cpp程序运行shell脚本
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- IPC使用多个管道和分支进程来运行Python程序
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 基于boost的程序的静态链接——zlib问题
- 程序崩溃并显示"std::out_of_range"错误
- 在C应用程序中运行C++(带有STL)函数
- 使用mongocxx驱动程序时包含头文件问题
- 如何在c++程序中找到函数的地址