Skip to content
This repository has been archived by the owner on Jul 11, 2019. It is now read-only.
/ qed Public archive

A minimal continuous integration server running on .NET for repositories hosted on GitHub

License

Notifications You must be signed in to change notification settings

half-ogre/qed

Repository files navigation

QED CI

A minimal continuous integration server for repositories hosted on GitHub.

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

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

  • .NET 4.5
  • git.exe in the %PATH%

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

About

A minimal continuous integration server running on .NET for repositories hosted on GitHub

Resources

License

Stars

Watchers

Forks

Packages

No packages published