使用 Travis CI(使用 docker)对 Perl 存储库进行本地测试

Local testing of Perl repository using Travis CI (with docker)

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

我的目标是能够 运行 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/ 目录”,但我可能需要一些遗漏的步骤。

不管它的价值如何,我认为你从错误的角度来看它。

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

我推荐这个的另一个原因是 - 正如您已经看到的那样 - 当您依赖某些东西来测试您的代码时,develop-debug-fix 周期会 很多 更长远程。

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

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

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