Travis CI is a hosted continuous integration and
deployment system. There are two versions of it,
travis-ci.com for private repositories, and
travis-ci.org for public repositories.
This repository contains the central issue
tracker for the Travis CI
Documentation for the Travis CI project can be found at
Travis CI consists of many different sub-projects. The main ones are:
travis-api is the Sinatra app that's
responsible for serving our API. It responds to different HTTP endpoints and
runs services in travis-core. Very little logic is in this
travis-build creates the build
script for each job. It takes the configuration from the
.travis.yml file and
bash script that is then run in the build environment by
travis-core holds most of the logic
for Travis CI. This repository is shared across several other apps and
holds the models, services, and other things that these apps need.
travis-cookbooks holds the
Chef cookbooks that are used to provision the build environments.
travis-hub collects events from
other apps and notifies other apps about the events. For example, it notifies
travis-tasks about builds starting and finishing so
notifications can be sent out.
travis-hub is also responsible for enqueueing jobs that have been created and
enforcing the Quality of Service restrictions, such as the number of concurrent
builds per user.
notifications from GitHub whenever commits are pushed or pull requests are
opened. They are then pushed onto RabbitMQ for other apps to process.
travis-logs receives log updates
from travis-worker, saves them to the database and pushes
them to the web client. When a job is finished, travis-logs is
responsible for pushing the log to Amazon S3 for archiving.
travis-support holds shared
logic for the different Travis CI apps. It is different from travis-core in
that it holds more generic things, like how to run an async job or how to
notifications from travis-hub and sends out notifications to the
different notification providers as needed.
travis-web is our main Web client.
It is written using Ember and communicates with
travis-api to get information and gets live updates from
travis-hub and travis-logs through
travis-worker is responsible for
running the build scripts in a clean environment. It streams the log output to
travis-logs and pushes state updates (build starting/finishing)