2017-08-19 298 views
0

我试图测试my Haskell packageTravis的几个Stackage解析器,但我的--resolver环境变量被忽略。如何指定解析器(和GHC)Travis应该用来测试我的Haskell包?

例如,如果我指定

env: 
- ARGS="--resolver lts-4.0" 
在我 .travis.yml

,我仍然似乎仍然使用不同的分解器(一个在my stack.yamlα)和GHC,如图由线等

Installing library in 
/home/travis/build/orome/crypto-enigma-hs/.stack-work/install/x86_64-linux/lts-9.1/8.0.2/lib/x86_64-linux-ghc-8.0.2/crypto-enigma-0.0.2.9-6Cs7XSzJkwSDxsEMnLKb0X 

在相应的build log中,其指示不同的解析器(9.1)和相应的GHC(8.0.2)被使用。

我应该如何配置我的版本(stack.yaml,.travis.yml等)以确保我指定的解析器(和相应的GHC)用于执行我的Travis构建和测试?

+0

你在哪里使用'ARGS'? – Zeta

回答

2

使用env您只需定义环境变量。你仍然必须使用它们。 stack本身并不尊重ARGS变量,因此请在脚本中使用它,例如,

install: 
# Build dependencies 
- stack $ARGS --no-terminal --install-ghc test --only-dependencies 

script: 
# Build the package, its tests, and its docs and run the tests 
- stack $ARGS --no-terminal --install-ghc test --haddock --no-haddock-deps 

你应该使用一个更好的名字,例如RESOLVER

env: 
- RESOLVER=lts-4.0 
- RESOLVER=lts-6.0 
- RESOLVER=lts-8.0 

install: 
# Build dependencies 
- stack --resolver $RESOLVER --no-terminal --install-ghc test --only-dependencies 

script: 
# Build the package, its tests, and its docs and run the tests 
- stack --resolver $RESOLVER --no-terminal --install-ghc test --haddock --no-haddock-deps 

也请记住,这通常是一个好主意,用多个stack.yml持有该特定LTS配置变种。

欲了解更多信息,请参阅stack's Travis documentationTravis' environment variables documentation

+0

所以'RESOLVER'的每个值会依次被使用? – orome

+0

@raxacoricofallapatorius是的,每个环境都会依次使用。 – Zeta

+0

啊,我明白了:我误解了“不尊重ARGS”,意思是说Travis没有一个聪明的方法来使用'env'。 – orome