Each code change needs to be made via a separate branch and then merged via a Pull Request. Pull requests need to be approved manually as well as approved via automatic checks.
Automatic checks are done with Travis CI as defined in .travis.yml in each repository.
When the master branch is updated as well as successfully built and deployed the resulting docker images are deployed inside OpenShift in the CI environment.
TEST environment is updated using the script deploy-test.sh in /openshift.
We use semantic-release to automate version management and package/images publishing.