I have a project that I'm trying to automate tests using Travis CI. I have a dev branch and a test branch, and they have different environment variables. For example, on the dev branch, I need to connect to a different API than the test branch, specified by an environment variable. So, when I run the build on the dev branch on Travis, how do I set it up so that it only tests with the dev set of environment variables, and likewise for build on test branch?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
There is no great way to do this right now, but you can write a shell script that checks the Travis environmental variable TRAVIS_BRANCH
(Which returns the branch that Travis is testing) and sets respective environmental variables in response. Here is a short example (Please note that I'm not a expert in shell scripting so if I screwed this up or did something silly let me know and I'll fix it):
if [ ${TRAVIS_BRANCH} == development ]; then TEST_MODE=dev stuff else TEST_MODE=master stuff fi export TEST_MODE
回答2:
Travis can have different .travis.yml
configs for each branch. So modifying .travis.yml
on branch test
doesn't affect .travis.yml
on develop
or master
branch:
develop
branch.travis.yml
:env: - DEVELOP_BRANCH_VARIABLE=FOO script: - ./run-develop-branch ${DEVELOP_BRANCH_VARIABLE}
test
branch.travis.yml
:env: - TEST_BRANCH_VARIABLE=BOO script: - ./run-test-branch ${TEST_BRANCH_VARIABLE}