half-ogre / qed

A minimal continuous integration server running on .NET for repositories hosted on GitHub
MIT License
49 stars 15 forks source link

QED CI

A minimal continuous integration server for repositories hosted on GitHub.

:warning: QED is just getting started and is only barely useful. It's still needs lots of features and is certainly full of bugs. :warning:

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.

Server Installation

Requirements

Steps

  1. Clone the source code.
  2. Run msbuild.exe in the repository's root directory.
  3. Modify the sample build configuration in the repository's root directory.
  4. Configure the GitHub repository.
  5. Run ./bin/Debug/qed.exe from the repository's root directory.
  6. Open a browser to http://localhost:1754.

Build Configuration

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
]

GitHub Repository Configuration

Add a post-receive hook with the event type push (the default) and a URL of http://your-host/events/push.

Testing Post-Receive Hooks

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