首页 > 解决方案 > 使用 Travis CI(使用 docker)对 Perl 存储库进行本地测试

问题描述

我想修复 Perl 存储库中的一个错误(现在归我所有,我刚刚提交了一些拉取请求),但目前它的 Travis CI 测试失败了(在我的拉取请求之前)。

我的目标是能够从存储库的.travis.yml.

请注意,我对 Travis CI 完全陌生。

遵循其他指向此常见问题解答的解决方案(http://web.archive.org/web/20180929150027/https://docs.travis-ci.com/user/common-build-problems/#troubleshooting-locally-in- a-docker-image),如您所见,它在 travis-ci.com 中不再正式可用,我尝试了:

sudo  docker pull travisci/ci-amethyst:packer-1512508255-986baf0
sudo docker run --name travis-debug -dit travisci/ci-amethyst:packer-1512508255-986baf0 /sbin/init
sudo docker exec -it travis-debug bash -l

从容器:

su - travis
git clone https://github.com/{user}/{repo}.git

现在我不知道如何构建 bash 脚本来运行测试,因为最后两个步骤(手动安装依赖项/运行 Travis CI 构建)看起来很神秘(我不知道如何运行构建,并且可能导致缺乏可重复性(如果我手动安装依赖项,我怎么知道我会得到与云测试相同的结果?)

我尝试从此处描述的过程(https://github.com/travis-ci/travis-build )开始,一个错误是“无法找到 Gemfile 或 .bundle/ 目录”,但我可能需要一些缺失的步骤。

标签: perldockertravis-citravis-ci-cli

解决方案


对于它的价值,我认为你从错误的角度来看待它。

Travis 只是在远程运行你的东西。与其将 Travis 带到你的机器上,不如先让你的测试在本地通过——不管是否神秘——没有办法绕过它,特别是如果你要拥有这个 repo。

我推荐这个的另一个原因是——正如你已经看到的——当你依赖某些东西来远程测试你的代码时,开发-调试-修复周期要长得多。

根据我的经验,您.travis.yml应该非常简单,因为它只运行一两个可以在本地轻松运行的脚本或命令。

如果您对 Docker 感到满意,我会考虑构建一个Dockerfile包含所有依赖项的本地,并将您的测试带到您的 docker 环境中。一旦你成功完成了这一步,让 Travis 做同样的事情(在 docker 中运行测试)就很简单了。

不确定这是否是您正在寻找的答案,但评论太长了。


推荐阅读