A minimal continuous integration server for repositories hosted on GitHub.
QED accepts post-receive hooks from a GitHub repository and then clones and builds that repository. When finished, it uses the GitHub API to update the commit status.
Requirements
- .NET 4.5
git.exe
in the%PATH%
Steps
- Clone the source code.
- Run
msbuild.exe
in the repository's root directory. - Modify the sample build configuration in the repository's root directory.
- Configure the GitHub repository.
- Run
./bin/Debug/qed.exe
from the repository's root directory. - Open a browser to
http://localhost:1754
.
QED requires a JSON file named build.config
in its working directory. The format of this file is:
[
{ "owner": "the-repository-owner",
"name": "the-repository-name",
"token": "an-oauth-token-with-repo-scope",
"command": "the-command-to-run-e.g.-powershell.exe",
"commandArguments": "the-command-arguments-e.g.-cibuild.ps1"
},
// additional build configurations
]
Add a post-receive hook with the event type push
(the default) and a URL of http://your-host/events/push
.
If you are adding a new feature or fixing a QED bug, you might need to fake a post-receive hook to start a build locally. Here's a PowerShell snippet to fake a push event:
$pushPayload = 'payload='+[System.Uri]::EscapeDataString('{
"ref": "refs/heads/{branch}",
"after": "{sha}",
"repository": {
"name": "{name}",
"url": "https://github.com/{owner}/{name}",
"owner": {
"name": "{owner}"
}
}
}')
Invoke-WebRequest -Headers @{"X-GitHub-Event"="push"} -Method Post -Body $pushPayload http://localhost:1754/events/push