Harbormaster and Jenkins

We use Jenkins for our continuous integration. It automatically runs builds and tests on code revisions, and it keeps our live documentation up-to-date. This system is integrated directly into Phabricator.



Phabricator Harbormaster interfaces directly with Jenkins, starting builds and reporting the status to the rest of Phabricator. You will rarely need to interact directly with Harbormaster - the build success or failure is usually posted directly on the Differential Revision or Commit.


We use Phabricator Owner to track Packages - sets of files, usually relating to a single library or feature within that library.

When a revision is made to a particular Package, through either a new Revision or Commit, the related build will be triggered (if applicable).


A particular file may belong to more than one Package, and thus may trigger more than one build.

Controlling Builds

Sometimes you may not want to run builds and/or tests on a particular Revision yet. If you add the tags #nobuild and/or #notest to the Subscribers field of the Revision, the build will not be triggered.


Be aware that you cannot land a Revision until the tests have run. Thus, you’ll want to ensure that you remove #nobuild and #notest from the Revision before your last update.

Repository Masters

A Repository Master is a Phabricator user with special privileges on the repositories. A Repository Master can…

  • Land any Revision, regardless of build status.

  • Manually start builds.

  • Add and modify the build triggers.

  • Push to repositories without an accepted Revision.


We do not accept requests to become a Repository Master, so don’t ask.


Access and Login

Jenkins is open to the public, in that anyone can access it to view status and details about builds.

However, only MousePaw Media staff may log into Jenkins using their LDAP credentials (username and password). Thus, only staff can view build configurations. Permissions further depend on your role - only Repository Masters can edit build configurations.

If you’re a staff member, and you are having trouble logging in with your LDAP credentials, contact IT to have your password reset.


We do not issue LDAP credentials to non-staff under any circumstances.

Types of Builds


Most of our projects have a “build” job. These are all configured to work directly with Phabricator Revisions and Commits, and to run Goldilocks tests on demand (if the code supports them).

Technical Details

All C++ builds take place on Docker images with the latest version of our technical stack, and up-to-date clones of dependencies.