问题
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}
来源:https://stackoverflow.com/questions/21099377/travis-ci-testing-branches-with-corresponding-set-of-environment-variables