我在GitHub上托管了几个Symfony包,并使用Travis CI自动测试 .
测试中最长的部分是Composer安装的要求 .
我configured Travis CI用 composer update --prefer-dist
安装软件包并缓存 $HOME/.composer/cache
目录 . 由于缓存,测试总时间为18 minutes:
安装doctrine / lexer(v1.0.1)从缓存加载
但是一周前我看到了Composer的一条消息:
安装doctrine / lexer(v1.0.1)正在下载:正在连接...无法从dist下载doctrine / lexer:无法对github.com进行身份验证
因为这个,我changed the configuration到 composer update --prefer-source
. 这似乎是跨Symfony捆绑包的常见做法 . 测试套件采用28 minutes .
我知道我可以在Travis CI中注册GitHub密钥,以避免在使用Composer --prefer-dist
选项时出现API限制 .
他们是否有其他一些缓存依赖关系的方法?例如,通过克隆缓存中的依赖存储库?
2 回答
GitHub已经删除了API速率限制,
composer
现在可以与--prefer-dist
一起使用,并且可以缓存zip文件 . 以下是.travis.yml
中的配置示例:这是宣布:
Source .
我测试了
vendor/
目录的缓存并且它有效 . 我使用tar
来创建未压缩的存档$HOME/vendor-cache/
并为此目录配置了Travis CI .命令有两个目标:
如果缓存可用,则从缓存中提取
vendor/
在测试后将
vendor/
放入缓存中这是一个示例
.travis.yml
文件:这是一个带有更详细输出的完全带注释的
.travis.yml
文件:通过使用此方法,
composer update
取代30 seconds,而不是没有缓存的about 2 minutes(注意比较不完美,应用了一些其他更改,但这仍然是一个很好的估计) .最好在第一次启动构建时限制并行构建的数量,这样缓存就不会受到竞争条件的影响 .