在安装travis之前无法获得env变量值
问题描述:
我在不同版本的travis中有一个矩阵。这个想法是使用一个CLANG_SRC_VER变量。这个变量是通过一个travis矩阵设置的,并且在before_install部分中,我启动一个基于变量CLANG_SRC_VER的值来安装软件包的脚本。在安装travis之前无法获得env变量值
的travis.yml看起来是这样的:
matrix:
include:
- os: linux
dist: trusty
sudo: required
rvm: 2.1
env:
- CLANG_SRC_VER='35'
...
- os: linux
dist: trusty
sudo: required
rvm: ruby-head
env:
- CLANG_SRC_VER='35'
- os: linux
dist: trusty
sudo: required
rvm: 2.1
env:
- CLANG_SRC_VER='37'
- os: linux
dist: trusty
sudo: required
rvm: 2.2
env:
- CLANG_SRC_VER='37'
...
- os: linux
dist: trusty
sudo: required
rvm: 2.1
env:
- CLANG_SRC_VER='36'
- os: linux
dist: trusty
sudo: required
rvm: 2.2
env:
- CLANG_SRC_VER='36'
...
before_install:
- sudo ./tools/travis_before_install.sh
- gem install bundler
script:
- bundle exec tools/travis_build_gem.sh
- bundle exec gem install --debug --verbose --local clangc-0.0.1.gem
- ./tools/travis_run_tests.sh
而且travis_before_install.sh看起来像这样:
#!/bin/bash
case $CLANG_SRC_VER in
35)
echo "$CLANG_SRC_VER"
apt-get update -qq
echo "install the libs for $CLANG_SRC_VER"
apt-get install -qq llvm-dev libclang-3.5-dev libclang1-3.5 libclang-common-3.5-dev build-essential ruby-dev
echo "add symbolic link for $CLANG_SRC_VER"
ln -s /usr/lib/x86_64-linux-gnu/libclang-3.5.so /usr/lib/x86_64-linux-gnu/libclang.so;;
36)
echo "${CLANG_SRC_VER}"
apt-get update -qq
echo "install the libs for $CLANG_SRC_VER"
apt-get install -qq llvm-dev libclang-3.6-dev libclang1-3.6 libclang-common-3.6-dev build-essential ruby-dev
echo "add symbolic link for $CLANG_SRC_VER"
ln -s /usr/lib/x86_64-linux-gnu/libclang-3.6.so /usr/lib/x86_64-linux-gnu/libclang.so;;
37)
echo "$CLANG_SRC_VER"
apt-get update -qq
echo "install the libs for $CLANG_SRC_VER"
apt-get install -qq llvm-dev libclang-3.7-dev libclang1-3.7 libclang-common-3.7-dev build-essential ruby-dev
echo "add symbolic link for $CLANG_SRC_VER"
ln -s /usr/lib/x86_64-linux-gnu/libclang-3.7.so /usr/lib/x86_64-linux-gnu/libclang.so;;
38)
echo "$CLANG_SRC_VER"
apt-get update -qq
echo "install the libs for $CLANG_SRC_VER"
apt-get install -qq llvm-dev libclang-3.8-dev libclang1-3.8 libclang-common-3.8-dev build-essential ruby-dev
echo "add symbolic link for $CLANG_SRC_VER"
ln -s /usr/lib/x86_64-linux-gnu/libclang-3.8.so /usr/lib/x86_64-linux-gnu/libclang.so;;
*)
echo "$CLANG_SRC_VER"
apt-get update -qq
echo "install the libs for $CLANG_SRC_VER"
apt-get install -qq llvm-dev libclang-3.5-dev libclang1-3.5 libclang-common-3.5-dev build-essential ruby-dev
echo "add symbolic link for $CLANG_SRC_VER"
ln -s /usr/lib/x86_64-linux-gnu/libclang-3.5.so /usr/lib/x86_64-linux-gnu/libclang.so;;
esac
的问题是,在基体中的每种情况下,CLANG_SRC_VER是空的。 我检查了特拉维斯输出中,我有这条线表明这些变量被设置和导出:
Setting environment variables from .travis.yml
$ export CLANG_SRC_VER='37'
答
很容易,在travis.yml我只是改变这一行:
sudo ./tools/travis_before_install.sh
至
sudo CLANG_SRC_VER=$CLANG_SRC_VER ./tools/travis_before_install.sh
为了在sudo环境中定义变量。