mirror of
https://gitlab.silvrtree.co.uk/martind2000/nci.git
synced 2025-01-10 21:05:09 +00:00
109 lines
3.6 KiB
Markdown
109 lines
3.6 KiB
Markdown
|
|
# nci
|
|
|
|
Flexible, open source continuous integration server written in node.js
|
|
|
|
|
|
It's good for those who prefer modular things to build system for specific
|
|
requirements by blocks, starting from small core then extend functionality
|
|
by plugins.
|
|
|
|
|
|
[![Build Status](https://travis-ci.org/node-ci/nci.svg?branch=master)](https://travis-ci.org/node-ci/nci)
|
|
|
|
|
|
## Features
|
|
|
|
* modular approach, small core a lot of plugins (e.g. rest api, web interface -
|
|
plugins, not core)
|
|
* modest system requirements (only node and scm clients are required, no
|
|
external db)
|
|
* pluginnable db storage (any [levelup](https://github.com/Level/levelup)
|
|
backend could be used)
|
|
* using on-the-fly snappy compression for all stored data (builds, build logs)
|
|
when leveldb (via leveldown backend) is used
|
|
* working with any mercurial, git repositories (no matter is it service like
|
|
github, bitbucket or private server, all you need is authenticate user from
|
|
which nci server is running without password e.g. by ssh key)
|
|
* damn fast single page web application interface
|
|
([classic ui plugin](https://github.com/node-ci/nci-classic-ui))
|
|
* server and projects could be configured with yaml
|
|
([yaml reader plugin](https://github.com/node-ci/nci-yaml-reader)) - provides
|
|
pretty shell scripting (strings without quotes, nice multiline strings, etc)
|
|
* provides agile project relations out of the box (see `blocks`, `blockedBy`,
|
|
`trigger` at [sample project config](./docs/sample-project-config.yaml))
|
|
* could catch every or specific commits (see `catchRev` at
|
|
[sample project config](./docs/sample-project-config.yaml))
|
|
|
|
|
|
Online demo is [here](http://classicui-ncidemo.rhcloud.com/).
|
|
|
|
|
|
## System requirements
|
|
|
|
* unix-like operating system, not tested on windows
|
|
* node.js >= 0.10
|
|
* git client >= 1.9 (only for building git projects)
|
|
* mercurial client >= 2.8 (only for building mercurial projects)
|
|
|
|
|
|
## Quick setup
|
|
|
|
Clone quick setup repo, go into it and install dependencies:
|
|
|
|
```sh
|
|
|
|
git clone https://github.com/node-ci/nci-quick-setup && cd nci-quick-setup && npm install
|
|
|
|
```
|
|
|
|
run nci:
|
|
|
|
|
|
```sh
|
|
|
|
node_modules/.bin/nci
|
|
|
|
```
|
|
|
|
that's all, now you can experiment with it by adding/changing projects,
|
|
use web interface (on http://127.0.0.1:3000 by default) for run project builds,
|
|
etc.
|
|
|
|
Currently web interface doesn't support adding new projects or editing of
|
|
existing projects. You have to do that by adding/editing project config
|
|
file.
|
|
|
|
See [basic tutorial](https://github.com/node-ci/nci/blob/master/docs/tutorials/standalone-web-ui.md)
|
|
for setup and usage details.
|
|
|
|
|
|
## Resources
|
|
|
|
* [basic tutorial](./docs/tutorials/standalone-web-ui.md)
|
|
* [online demo](http://classicui-ncidemo.rhcloud.com/)
|
|
* [sample project config](./docs/sample-project-config.yaml)
|
|
* [developing plugins doc](./docs/developing-plugins)
|
|
|
|
|
|
## Roadmap
|
|
|
|
* preserve output colors when spawn commands
|
|
* expose node/executors api, implement plugin for remote and isolated build
|
|
running (docker or similar). Only local executor currently available.
|
|
* extend web interface functionality
|
|
* allow store project config inside repository of this project
|
|
* provide integration with external systems (e.g. gogs)
|
|
|
|
|
|
## Plugins
|
|
|
|
* [yaml reader plugin](https://github.com/node-ci/nci-yaml-reader)
|
|
* [classic ui plugin](https://github.com/node-ci/nci-classic-ui)
|
|
* [static server plugin](https://github.com/node-ci/nci-static-server)
|
|
* [mail notification plugin](https://github.com/node-ci/nci-mail-notification)
|
|
* [jabber notification plugin](https://github.com/node-ci/nci-jabber-notification)
|
|
* [projects reloader plugin](https://github.com/node-ci/nci-projects-reloader)
|
|
* [rest api server plugin](https://github.com/node-ci/nci-rest-api-server)
|
|
* [scheduler plugin](https://github.com/node-ci/nci-scheduler)
|