Travis:有没有办法使用env vars以编程方式在基于容器的基础架构上安装软件包版本?

时间:2015-07-15 05:47:09

标签: travis-ci

在我的一个项目的.travis.yml中,我根据我在.travis.yml文件中设置的环境变量确定要安装的软件包。它看起来像这样:

env:
 - CABALVER=1.18 GHCVER=7.8.1
 - CABALVER=1.18 GHCVER=7.8.2
 ...

before_install:
...
 - travis_retry sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER
...

传统基础设施下的情况。我想switch to the container-based infrastructure,这意味着用以下内容替换before_install行:

addons:
  apt:
    packages:
    - cabal-install-$CABALVER
    - ghc-$GHCVER

...除了没有工作,因为在Travis尝试安装所请求的apt软件包之前,env vars不会被设置。因此,如果我尝试使用上述内容,我会收到一个错误,说明我是如何尝试安装名为cabal-install-ghc-的包(带有结尾连字符,但减去版本后缀),这当然不存在。

有没有办法在基于容器的基础架构上实现我想要的东西?我可以尝试一次安装所有版本并稍后使用env vars来确定在给定作业上使用哪个版本,但是(即使我可以防止由于安装了多个GHC和Cabals而导致所有地狱崩溃曾经)为每个构建工作安装所有这些工作真的很慢,这将取消切换到基于容器的基础架构的目的。

0 个答案:

没有答案