Apache Gump™
Apache
Gump
Object Model
Python Gump
Apache Gump
Status
Source
Metadata
FAQ
License
Results
Nightly
Community
Mailing Lists
Source
Wiki
Issues
Get Involved
Reporting Security Issues
Who We Are
Project Bylaws
Sponsorship
Donate
Thanks
Apache Gump™
What is Apache Gump™?
How does Gump work?
Where is Gump?
When does Gump run?
Who is Gump?
Why was Gump written?
Trademarks
What is Apache Gump™?
The Apache Gump continuous integration tool was the first one
developed at
the
Apache Software Foundation
. It is written in Python and fully supports Apache Ant,
Apache Maven (1.x to 3.x) and
other build tools
. Gump is unique in that it builds and compiles software against
the latest development versions of those projects. This allows Gump to detect potentially
incompatible changes to that software just a few hours after those changes are checked into the
version control system. Notifications are sent to the project team as soon as such a change is
detected, referencing more detailed reports available online.
You can set up and run Gump on your own machine and run it on your own projects, however it is
currently most famous for building many of Apache's projects and their dependencies. For this purpose, the
Gump project maintains its own dedicated server.
How does Gump work?
With Gump,
project
definitions are mapped from XML into in memory
objects for processing. Scripts execute SCM update
commands for every module which contains a project being built, and
invoke builds for each project in an order that ensures that dependencies
are satisfied. Build outputs are processed and, if successful, dependent projects
are then built on these outputs.
The commands use the actual build.xml/Makefile/pom.xml files
from the projects, but in general do
not use the scripts or jar files checked into CVS/SVN. Instead,
Gump tries to play several tricks in order to ensure that Gump's
versions of files are used.
In order to really build against the latest versions of
everything, Gump will need support from the build process, the
build tool or has to find its way around the build tool.
The
Apache HTTPd
builds
are an example for a build process that supports
Gump. HTTPd needs APR and Gump can provide the path to the
freshly built APR files as command line options to the buildconf
and/or configure scripts.
For builds using Apache Ant,
Gump sets
build.sysclasspath
property of Ant to
only
and manages the system classpath:
To quote Ant manual:
Only the system classpath is used and classpaths specified in build files, etc are ignored.
This situation could be considered as the person running the build file knows more about the environment than the person writing the build file
Note that Gump uses the lastest version of Ant (from tip of master branch in their Git repository) when building Ant projects.
For Apache Maven 1.x builds, Gump runs Maven with the --offline switch
and uses jar overrides. Sometimes the artifact ids expected by
maven and Gump's names of the jars don't match, in which case
artifact ids.
So far Gump's support for Apache Maven 2.x and later uses the most complex
approach, using a proxy server. For the full story see
the section on the mvn2
builder
Support for Gradle hooks into the approach
taken for Maven and uses the same local repositories and
repository proxy.
The net effect is that every project is built every day with the latest
version of every dependency - including the latest Ant, latest JUnit,
latest XML parser.
The results are captured into html pages. An extensive amount of hypertext
links are added to allow quick and easy navigation, and failures are
color coded on the main build page.
The "official" Gump run on vmgump will optionally send
e-mails to various newsgroups upon build failures.
Where is Gump?
Source
When does Gump run?
Site
JVM
Comments
Apache
(vmgump - Ubuntu Linux 18.04)
OpenJDK 11
up to 4 times daily
Who is Gump?
Gump was named after
Forrest Gump
the title character in a movie. The process for building was to do a
"Generate", followed by cvs "Updates", followed by a "Build All". This
was repetitive, so a command was created to combine these operations -
and it was named "guba". This sound this made when spoken reminded me
of "Bubba Gump".
This seemed oddly appropriate as much of the motivation for Gump
derived from the frustrations building Cocoon. The FAQ for
that project indicate that the project was named after a movie that the
creator of that project was particularly fond of, so it seemed fitting
that this effort would be named after a movie.
A number of other fortunate coincidences proved this was the right choice for a name.
From the role of the feather in the
opening and closing scenes (something adapted to the Apache
feature for the original Gump icon), to the catch phase of "Stupid is as Stupid
does" - something that captures the spirit of a large number of build
errors caught by this process. And most significantly (to some) - the
wisdom passed on from Gump's mother that "Life is like a box of
chocolates - you never know what you are going to get!". I can think
of no more apt description of a build process which takes the absolute
latest versions of almost everything and attempts to build them together!
Why was Gump written?
That question is complex enough that it deserves a
separate page
Trademarks
Apache Gump, Gump, Apache, the Apache oak leaf logo, and the
Apache Gump project logos are trademarks of The Apache Software
Foundation.
Java is a registered trademarks of Oracle Corporation. All
other product names mentioned herein and throughout the entire
web site are trademarks of their respective owners.
by Sam Ruby, Adam Jack, Community
Copyright ©
2003-2025
The Apache Software Foundation.
Apache Gump, Gump, Apache, the Apache oak leaf logo, and the Apache Gump
project logos are trademarks of The Apache Software Foundation.
US