TL;DR We’re changing the after_script
command to run regardless of the test result,
previously it was run only on success.
What exactly will change?
Previously, if you specified after_script
commands they were run right after
the script
commands (i.e. your test suite) and only if the script
commands
were successful (ie. returned 0). This made it virtually the same as the
after_success
command. Futhermore, there was no way to run commands both on
success and failure without specifying them twice in the success and failure
stages.
In order to simplify things, we changed after_script
to run at the very end,
i.e. after the after_success
and after_failure
stages. after_script
will
be run no matter what was returned from the previous commands. We will also
export a TRAVIS_TEST_RESULT
env variable, which contain the test result
returned from running the tests in script
.
When will the change be deployed?
We plan to deploy this change early next week.
How to fix my .travis.yml?
If commands that you execute in the after_script
stage do care about the
result of your tests and are not required to be run before after_success
command, you probably don’t need to change anything and your tests should run
just fine.
If you rely on the fact that a failure in the after_script
phase, fails the
entire test, you should move, you should move such commands to the script
phase.
For example, the following:
script:
- rake
after_script:
- build_something_important
should be changed to:
script:
- rake
- build_something_important
If you don’t want for those commands to fail the test then move them to the
after_success
phase.