#esioci
EsioCi is an OpenSource Continuous Integration software
- Elixir >= 1.2
- OTP 19
- PostgreSQL database
- Redis database
- 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
All app configuration in config/config.exs, see comments for details
esioci.yaml file is a file with all builds configuration. This file should be placed in your's repository root.
---
build:
- exec: "cmd1"
- exec: "cmd2"
artifacts: "artifacts_file.txt"
- 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
Returns json with last build status for project: project_name
Returns json with specific build
Returns json with all builds for specific project
Returns json with information about specific project
Returns json with information about project with id
Returns json with information about all project
Run github project
Get build log.
- get dependencies
mix deps.get - compile
mix compile - Run docker images with psql and Redis
docker run -p 5432:5432 -d postgres:10.2docker 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
- Prepare test database
MIX_ENV=test mix ecto.createMIX_ENV=test mix ecto.migrateMIX_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
- Other
- Add pooling, now projects in database has repository collumn. EsioCI polls that repository and builds if detect changes.
- Fix code style.
- Upgrade elixir and hex packages.
- API
- get build log
- Other
- EsioCi.Builder module refactoring, add test, increase code coverage
- save build log to file in addition to standard application log
- Fixes
- fix problem with build continues if step fails
- fix esioci.yaml file
- API
- add support for bitbucket
- YAML
- basic support for artifacts, esioci copies files to /tmp
- Fixes
- fix run_cmd if cmd directory doesn't exist
- fix non deterministic unit tests
- Other
- Enable logging to file, by default all log comes to debug.log
- API
- get all builds from project
- get all projects
- get project by id
- YAML
- run multiple exec from one esioci.yml file
- Fixes
- Bug with build stuck in RUNNING state if parse yaml fails
- Bug with parse only one command from esioci.yaml
- API
- get build by id
- get project by name
- Improvement code quality and code coverage
- Support for github requests
- exec() command in esioci.yaml
- API
- check last build status via api
Grzegorz "esio" Eliszewski - http://esio.one.pl