GoCI was made to be a simple and generic continuous integration system made with Go (Golang).
GoCI uses a simple plugin system that let you use some different ways to execute tasks. Today we have two plugins:
- CLI = Execute anything from command line interface (CLI).
- JS = Execute a javascript file that can have any logic, CLI execution, etc.
- Small memory usage, only 10MB
- You can call your existing CLI script (bash file, sh file, BAT file) using CLI plugin
- You can call a javascript file with your own logic, calling external programs and updating web interface in real time
- The GoCI project is a simple JSON file - you dont need a database and you can put on Git
- All execution log are a json file too, you can put all in Git or ignore it
- You dont need reload the server to create new projects or tasks, when change the project file, click on Refresh button from GoCI web interface
- The web interface is clean, perfect and mobile ready, you can use desktop, smartphone or tablet to use GoCI
- All tasks uses HTML to show the results on web interface (GoCI uses bootstrap)
- GoCI expose all in API model, so you can consume using your own external tools if need
- Your tasks can have options to be typed/selected in a modal dialog when you run it
- Built-in native integrations to be called from your javascript file (SendGrid, Slack, PushBullet and more), check sample task file "task-integration-test.js"
- It is open-source, so you can collaborate too
- You can DONATE!
Before start:
- Workspace in GoCI is any directory and is inside workspace directory that your projects and logs will be store. When start GoCI it will create inside our workspace some other folders automatically.
Start now:
1 - Create a configuration file (config.ini):
[server]
host = localhost:8080
workspaceDir = YOUR-GOPATH-DIRECTORY/src/github.com/prsolucoes/goci/extras/sample
3 - Execute from terminal: goci -f config.ini
4 - Open in your browser: http://localhost:8080
GoCI come with all functions, project options, integrations and capabilities inside "extras/samples" directory. Check it for more information and javscript task.
If you dont want install Go (golang), you can get GoCI compiled from this repository inside folder "build". We always compile binary to OSX, Linux and Windows.
If you have Go (golang) installed, follow this steps:
- Execute: go get -u github.com/prsolucoes/goci
- Execute: cd $GOPATH/src/github.com/prsolucoes/goci
- Execute: make deps
- Execute: make install
** Dont use the character / on end of any configuration path **
Check file: controllers/api.go
Today we dont have a API doc - but is simple looking code [TODO]
You can use some make commands to control GoCI service, like start, stop and update from git repository.
- make stop = it will kill current GoCI process
- make update = it will update code from git and install on $GOPATH/bin directory
- make deps = download all dependencies
- make format = format all files (use it before make a pull-request)
- go build
- ./goci -f extras/sample/config.ini
or
- go run -f extras/sample/config.ini
Today we support this types of fields for task option:
- text
- checkbox
- textarea
- password
- hidden
- select
Today we support this integrations:
- SendGrid (send emails)
- PushBullet (send push message)
- HttpGet (call any URL using GET method)
- SlackWebHook (send message using web hook to Slack)
Today, only some functions are implemented in javascript integration. If you need one, you can make a pull-request or send a message in Github Issue.
# HOME
# PROJECT LIST
# TASK LIST OF SELECTED PROJECT
# TASK RESULTS VIEW
# RUNNING AND LAST JOBS
# TASK PARAMS WHEN RUN
MIT