perl - 使用 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/ 目录”,但我可能需要一些缺失的步骤。
解决方案
对于它的价值,我认为你从错误的角度来看待它。
Travis 只是在远程运行你的东西。与其将 Travis 带到你的机器上,不如先让你的测试在本地通过——不管是否神秘——没有办法绕过它,特别是如果你要拥有这个 repo。
我推荐这个的另一个原因是——正如你已经看到的——当你依赖某些东西来远程测试你的代码时,开发-调试-修复周期要长得多。
根据我的经验,您.travis.yml
应该非常简单,因为它只运行一两个可以在本地轻松运行的脚本或命令。
如果您对 Docker 感到满意,我会考虑构建一个Dockerfile
包含所有依赖项的本地,并将您的测试带到您的 docker 环境中。一旦你成功完成了这一步,让 Travis 做同样的事情(在 docker 中运行测试)就很简单了。
不确定这是否是您正在寻找的答案,但评论太长了。
推荐阅读
- java - 如何在drools中实现时间持久性?
- php - 使用 php 将 .sql.gz 文件导入 mysql
- java - 如何防止在 ImageView 上的第一个 onClick 事件完成之前执行第二个 onClick 事件
- python - 如何将文本文件的第一行作为键,下一行作为值,之后的行作为第二个值直到空行,然后再次重复
- ios - tabBar 的背景图片
- c++ - 如何通过 static_assert 检查函数签名是否正确
- reactjs - 使用 ReactJS 单击按钮时如何定向到新页面?
- javascript - 使用随机答案应用程序创建随机问题
- google-cloud-data-fusion - 使用自定义名称将零件文件缝合到一个
- macos - Perl 模块安装 Mac OSX Gatekeeper