Leeroy: Jenkins Build Agent
C#
Permalink
Failed to load latest commit information.
src/Leeroy Add author names to build commit message. Feb 5, 2014
.gitattributes
.gitignore
LICENSE
Leeroy-Dev.sln
Leeroy.sln
README.md

README.md

Leeroy

Leeroy is a Windows service that monitors GitHub repositories for changes; when a new commit is detected, it starts a Jenkins build.

Build Repositories

Leeroy is designed to work with a “build repository”—a git repository that contains a text file with the current build number, and one or more submodules.

Leeroy monitors a specific branch in each submodule’s repository. When a new commit is pushed to that branch, Leeroy creates a commit in the build repository that updates that submodule; it also increments the current build number. Once the commit it pushed, it makes a HTTP request to Jenkins (or any compatible CI server) to start a build.

GitHub API

Checking for changes and creating new commits is done through the GitHub API, so Leeroy can only work with repositories hosted at github.com or at GitHub Enterprise.

How To Install

  1. Clone the Leeroy repository.
  2. Build the code.
  3. Copy the Release build output to a folder on your server.
  4. Edit Leeroy.exe.config in that folder and ensure the credentials and logging settings are correct.
  5. Open an Administrative Command Prompt in that folder.
  6. Run C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe Leeroy.exe
  7. Run sc start Leeroy to start the service.

How To Configure

Leeroy loads its configuration files from a GitHub repository (and automatically reloads them when the master branch in that repository is updated). The configuration files are stored in the following JSON format:

{
    "buildUrl": "http://SERVER/job/JENKINS-JOB-NAME/build",
    "buildUrls": [ optional array of URLs, if a commit should start
        multiple builds ],
    "repoUrl": "git@SERVER:Build/BUILDREPO.git",
    "branch": "master", /* or branch to build */
    "submoduleBranches": { optional hash, which maps submodule
        paths to the branch to track in that submodule; the default is to
        track the branch given by 'branch' above
    }
}