Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ocharles/micro-ci
A tiny CI server built around GitHub and Nix
https://github.com/ocharles/micro-ci
continuous-integration dhall haskell nix nixos nixpkgs
Last synced: 3 months ago
JSON representation
A tiny CI server built around GitHub and Nix
- Host: GitHub
- URL: https://github.com/ocharles/micro-ci
- Owner: ocharles
- License: bsd-3-clause
- Created: 2017-10-07T16:12:27.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-10-09T15:46:03.000Z (over 7 years ago)
- Last Synced: 2024-09-28T09:20:14.831Z (4 months ago)
- Topics: continuous-integration, dhall, haskell, nix, nixos, nixpkgs
- Language: Haskell
- Size: 79.1 KB
- Stars: 132
- Watchers: 13
- Forks: 14
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
README
# micro-ci
Hello, thanks for checking out `micro-ci`.
`micro-ci` is a tiny continuous integration server, that tries to do
very little. By this, we mean off loading as much logic as possible to
other systems. In particular, this continuous integration server
*only* supports GitHub and Nix.This project is in its infancy, but if you'd like to play along at
home, here's how.![Example](./example.png)
## Getting Started
1. **Get an OAuth token.**
Navigate to https://github.com/settings/tokens and generate a new
OAuth token. It only needs the `repo:status` permission.2. **Add the webhook.**
Go to https://github.com/$YOUR_NAME/$YOUR_REPO/settings/hooks,
changing `$YOUR_NAME` and `$YOUR_REPO` appropriately. Add a webhook
with a URL of the format: `http://$PUBLIC_HOST:8080/github/web-hook`,
where `$PUBLIC_HOST` is the publically accessible host of the
server that will be running your builds.
Set:
* Content type: `application/json`
* Secret: (anything you want)
* Which events: at least "pull request", but you can also just use
"everything".4. **Configure the server**.
In the directory you plan to run `micro-ci` from, you'll need a
`config.dhall` file. A template is:
```dhall
{
repoRoot = "repositories",
secret = ...,
oauth = ...
}
```
Fill in `oauth` and `secret` according to values previously retrieved/entered.
4. **Run the server**.On the machine that will run the builds, run
```
nix-build ci.nix -A micro-ci
./result/bin/micro-ci
```5. **Add a `ci.nix` file to your project**.
Finally, write a `ci.nix` file in your project. This Nix
expression should evaluate to an attribute-set of derivations.
For example, a Haskell project could use:
```nix
with (import {});
{
cabal-build = haskellPackages.callPackage ./default.nix {};
}
```
But you can be as clever as you want. All that `micro-ci` cares
about is if the derivation can be evaluated.6. *Optional*: **Add status checks**
Open a pull request to check that everything works. If it looks
good, you can enforce `micro-ci` to pass all jobs. Head to
https://github.com/$YOUR_NAME/$YOUR_REPO/settings/branches and set
up a protected branch and add the `ci.nix` statuses.