Building Traffic Control¶
The build steps for Traffic Control components are all pretty much the same, despite that they are written in a variety of different languages and frameworks. This is accomplished by using Docker.
Currently, both listed methods of building Traffic Control components will produce
*.rpm files, meaning that the support of these components is limited to RedHat-based distributions - and none of them are currently tested (or guaranteed to work) outside of CentOS7, specifically.
Downloading Traffic Control¶
If any local work on Traffic Monitor, Traffic Router Golang, Grove or Traffic Ops is to be done, it is highly recommended that the Traffic Control repository be downloaded inside the
$GOPATH directory. Specifically, the best location is
$GOPATH/src/github.com/apache/trafficcontrol. Cloning the repository outside of this location will require either linking the actual directory to that point, or moving/copying it there.
The Golang project’s
GOPATH wiki page
This is the easiest way to build all the components of Traffic Control; all requirements are automatically loaded into the image used to build each component.
|||This is optional, but recommended. If a |
./pkg [options] [projects]
pkg script often needs to be run as
sudo, as certain privileges are required to run Docker containers
|-q||Quiet mode. Supresses output.|
|-v||Verbose mode. Lists all build output.|
|-l||List available projects.|
projects should be one or more project names. When no specific project or project list is given the default projects will be built. Valid projects:
|||(1, 2, 3, 4, 5, 6, 7) This is a default project, which will be built if |
*.rpm files, build logs and source tarballs will be output to the
dist directory at the root of the Traffic Control repository directory.
pkg script fails,
docker-compose can still be used to build the projects directly. The compose file can be found at
infrastructure/docker/build/docker-compose.yml under the repository’s root directory. It can be passed directly to
docker-compose, either from the
infrastructure/docker/build/ directory or by explicitly passing a path to the
infrastructure/docker/build/docker-compose.yml file via
-f. It is recommended that between builds
docker-compose down -v is run to prevent caching of old build steps. The service names are the same as the project names described above in Usage, and similar to the
pkg script, the build results, logs and source tarballs may all be found in the
dist directory after completion.
docker-compose in the way described above will build _all_ projects, not just the default projects.
Building Individual Components¶
Each Traffic Control component can be individually built, and the instructions for doing so may be found in their respective component’s development documentation.
Building This Documentation¶
This documentation uses the Sphinx documentation build system, and as such requires a Python3 version that is at least 3.4.1, but no greater than 3.6.5. It also has dependency on Sphinx, and Sphinx extensions and themes. All of these can be easily installed using pip by referencing the requirements file like so:
python3 -m pip install --user -r docs/source/requirements.txt
Once all dependencies have been satisfied, build using the Makefile at
|||A bug in pygments prevents Python 3.7.x from working with Sphinx|