#esioci
EsioCi is an OpenSource Continuous Integration software
Requirements
- Elixir >= 1.2
- OTP 19
- PostgreSQL database
- Redis database
How To Use
Installation and Configuration
- Download source code
- Configure application via ENV variables
- ESIOCI_API_PORT => port witch esioci starts, default is 4000
- ESIOCI_DB => database name, default is "esioci"
- ESIOCI_DB_USER => database user
- ESIOCI_DB_PASSWD => database password
- ESIOCI_DB_HOST => database host
- ESIOCI_POLLER_NTERVAL => poller run interval in ms, default 60000
- Set artifacts directory, default is /tmp/artifacts
- Create database:
HINT: You can run dev database instance in docker:
docker run --name some-postgres -p 5432:5432 -d postgres
- Run migration
mix ecto.migrate
- Seed database
mix run priv/repo/seeds.exs
- Run application
screen iex -S mix run
- Configure github push webhook and point it to
address:port/api/v1/default/bld/gh
Configuration file
All app configuration in config/config.exs, see comments for details
esioci.yaml
esioci.yaml file is a file with all builds configuration. This file should be placed in your's repository root.
Example esioci.yaml:
---
build:
- exec: "cmd1"
- exec: "cmd2"
artifacts: "artifacts_file.txt"
yaml commands:
- build: master build configuration
- exec: command to execute, supports multiple commands. Each command will be execute in order from up to down in file.
- artifacts: one file or directory, or pattern to copy to artifacts directory
API endpoints
Builds
GET api/v1/project_name/bld/last
Returns json with last build status for project: project_name
GET api/v1/project_name/bld/build_id
Returns json with specific build
GET api/v1/project_name/bld/all
Returns json with all builds for specific project
Projects
GET api/v1/project_name
Returns json with information about specific project
GET api/v1/projects/project_id
Returns json with information about project with id
GET api/v1/projects/all
Returns json with information about all project
POST api/v1/project_name/bld/gh
Run github project
GET artifacts/build_id/build_build_id.txt
Get build log.
How To Develop
Run app first time
- get dependencies
mix deps.get
- compile
mix compile
- Run docker images with psql and Redis
docker run -p 5432:5432 -d postgres:10.2
docker run -d -p 6379:6379 redis
- Create database
mix ecto.create
- Migrate database
mix ecto.migrate
- Seed database
mix run priv/repo/seeds.exs
- run
iex -S mix run
Unit tests
- Prepare test database
MIX_ENV=test mix ecto.create
MIX_ENV=test mix ecto.migrate
MIX_ENV=test mix run priv/repo/seeds.exs
- Run unit tests and generate html coverage report
mix coveralls.html
- Coverage html report in cover directory
Changelog:
Authors
Grzegorz "esio" Eliszewski - http://esio.one.pl