Keeper of the statuses
Travis Hub is the application that, in the life-cycle of accepting, evaluating, and executing a build request, sits in the fifth position, next to Travis Logs.
In short Hub deals with updates to the job and build status coming in from the workers, while Logs deals with collecting build log output from them.
Once a build request has been:
- accepted by Listener,
- approved and configured by Gatekeeper,
- and its jobs have been scheduled by Scheduler,
The worker goes through a series of stages while acquiring and preparing a VM, and running the build script. Each time the state of the job changes the worker will send a message that will be processed by Hub. These messages are:
job:receivesignals that the worker has picked up a job and is going to boot a VM for it. (This state is displayed as "booting" in the UI.)
job:startsignals that the worker has started executing the build script.
job:finishsignals that the worker has finished executing the build script.
job:restartoccurs when the worker has troubles booting a VM, or looses connection to it while running the build script. (In this case the job's state will be reset to
:createdso that Scheduler will queue it again, and Worker will try again.
Processing these messages Hub will change the job's
state in the database,
set attributes such as
received_at, potentially change the respective build's
state as well. It will then emit events such as
build:finished which will send out notifications to other parties (such as
the web UI via Pusher, GitHub commit status or check run updates, email,
IRC, webhook notifications etc).
bundle install to retrieve dependencies from rubygems. Once key dependency, Sidekiq Pro required additional username/password config:
BUNDLE_GEMS__CONTRIBSYS__COM=username:password bundle config https://gems.contribsys.com/ $BUNDLE_GEMS__CONTRIBSYS__COM
Then, you'll need to install:
Once postgresql is installed, you'll need to setup a local test database:
createdb travis_test curl -fs https://raw.githubusercontent.com/travis-ci/travis-migrations/master/db/main/structure.sql | psql travis_test
Make sure you can use
postgresql as the database adapter, i.e. if you're
using homebrew, your
email@example.com should be
brew linked to
Once everything is setup, start the following services:
run tests with:
bundle exec rspec
Travis Hub was the first service that we extracted from our Rails application apart from Travis Listener. It was huge, and did all the things that now are being split up into 6 applications (Gatekeeper, Scheduler, Hub, Logs, Sync, Tasks). Nowadays it is one of the smallest service that deals with our core models directly.
We appreciate suggestions and contributions! See the CONTRIBUTING.md file for information on how to contribute to travis-hub. To chat about improvements, check out our community forum travis-ci.community and central issue tracker, travis-ci/travis-ci.
License & copyright