【问题标题】:Local testing of Perl repository using Travis CI (with docker)使用 Travis CI(使用 docker)对 Perl 存储库进行本地测试
【发布时间】:2019-05-13 09:40:05
【问题描述】:

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

我的目标是能够从存储库的.travis.yml 开始在本地运行 Travis CI 测试。

请注意,我对 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/ 目录”,但我可能需要一些缺失的步骤。

【问题讨论】:

    标签: perl docker travis-ci travis-ci-cli


    【解决方案1】:

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

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

    我推荐这个的另一个原因是 - 正如您已经看到的那样 - 当您依赖某些东西来远程测试您的代码时,开发-调试-修复周期会更长

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

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

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

    【讨论】:

    • 我同意并且我正在遵循建议。当我将“Perl 5.14”指定为基本系统时,了解哪个系统使用 TravisCI 可能会有所帮助,因为我发现与安装模块相关的问题在系统之间无法提供一致的结果,知道吗?
    • 构建失败后,Travis 有一个“Debug Build”,它可以让您通过 SSH 访问它,因此您可以检查系统。另一种方法是将要检查的任何命令放在.travis.ymlscript 部分(例如列出 perl 模块或显示操作系统版本等的命令)。
    猜你喜欢
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2019-05-04
    相关资源
    最近更新 更多