Go on Hardware CI: 100% free open source CI to run on RPis, macOS and Windows
Go Shell
Switch branches/tags
Nothing to show
Clone or download
maruel gohci-worker: improve gist and status
Make FAILED all cap so it's obvious.
Create gist before status, so it's linked right away.
Change 'tests' for 'checks', shorten status.
On success, list the number of checks ran.
On failure, list the number of checks that failed.
Refactor code.
Latest commit 231a1c3 May 8, 2018

README.md

gohci - The Go on Hardware CI

Go Report Card

Genesis

All I wanted was to run go test ./... on a Raspberry Pi on both Pull Requests and Pushes for a private repository. I realized that it is possible to store the test's stdout to a Github Gist so I created a serverless CI.

The result is the distilled essence of a Continuous Integration service that leans heavily toward testing Go projects on hardware, specifically low power ones (Raspberry Pis, C.H.I.P., BeagleBone, ODROID, etc) but also works great on Windows and macOS.

Part of the gohci lab testing https://periph.io:

lab

Here's how it looks like on a PR when the workers start to handle it:

screen cast

View of the status on commits:

commits

Design

It hardly can get any simpler:

  • Only support one specific use case: Golang project hosted on Github.
  • There is no "server", only workers that you run yourself. Each worker must be internet accessible and HTTPS must be proxied down to HTTP.

Features

  • 100% free and open source.
    • Secure, you are in control. There's no third party service beside GitHub.
    • Enables free testing on macOS, Windows or single CPU ARM micro computer.
    • Low maintenance, run as systemd/launchd service.
  • Each worker can test multiple repositories, each with custom checks.
  • Each check's stdout is attached to the gist as they complete.
  • The commit's status is updated "live" on Github. This is pretty cool to see in action on a GitHub PR.
  • gohci-worker exits whenever the executable or gohci.yml is updated; making it easy to use an auto-updating mechanism.

Not convinced? Read the FAQ.md for additional information.

Convinced? See CONFIG.md to get started!