我有一个需要GHC 7.10.2的项目,因此要使用Travis CI,我必须在预安装步骤中自行安装所需版本的GHC。
我目前正在使用
env:
- CABALVER=1.22 GHCVER=7.10.2
before_install:
- |
travis_retry sudo add-apt-repository -y ppa:hvr/ghc
travis_retry sudo apt-get update
travis_retry sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER
export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
在我的.travis.yml
;但由于我使用了sudo
,因此仅限于使用“遗留”基础设施。
我想利用新的基于容器的基础架构,并尽可能地遵循migration docs,从而产生
sudo: false
env:
- CABALVER=1.22 GHCVER=7.10.2
addons:
apt:
sources:
- hvr-ghc
packages:
- cabal-install-$CABALVER
- ghc-$GHCVER
before_install:
- |
export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
因为在我看来应该相当于上述内容。但是这会继续使用GHC的默认(7.4)版本,这会导致构建失败。
如何在基于容器的基础架构中构建Haskell 7.10.2?具体来说,我应该在.travis.yml
?
答案 0 :(得分:1)
有关如何使用指南中的Stack执行此操作的说明,您可以在以下位置查看完整示例:
https://github.com/commercialhaskell/stack/blob/master/doc/GUIDE.md#travis-with-caching
答案 1 :(得分:1)
我怀疑您使用的是language: haskell
。你可以试试language: c
。
我的理解是,travis目前还没有真正支持ghc-7.10.x
(存在悬而未决的问题)。解决方法是手动绕过并安装它(使用hvr-ghc
ppa);因此language: c
而不是haskell。
另一个提示。首先删除env
。我很确定它不适用于addons
。只需使用ghc-7.10.2
和cabal-1.22
即可。现在你的addons
应该可以正常工作了。检查您的travis日志以确定。
我可以确认堆栈教程(由Michael Snoyman链接)非常好。但它应该有或没有堆栈。
这里有一个travis文件供我参考,我试着将sudo
的使用量降到最低限度:
https://github.com/PierreR/language-puppet/blob/450ca249e23300351085d24fd58dcf9f429769d5/.travis.yml
如你所见,我仍然使用旧的travis infra,因为我需要带有C头的Ruby2.x。
这是一种相同的travis文件但不使用堆栈(堆栈仅对缓存有用):
https://github.com/bartavelle/language-puppet/blob/master/.travis.yml