# gitfoss-ci
GitFOSS CI is a continuous integration orchestraction app built in Crystal.
It exposes a set of endpoints so the GitFOSS forge can interact with it.
## Features
- Simple pipeline manifest file format (yaml): .gitfoss.ci
```yml
pipeline:
image: alpine:latest
stages:
- name: test
commands:
- yarn install --dev-only
- yarn test
test_report:
format: junit-coverage
path: ./tests/coverage/
- name: build
env:
- NODE_ENV=production
- DATABASE_URL=$DATABASE_URL # from Env["DATABASE_URL"]
commands:
- yarn install
- yarn generate
- yarn build
save_artefacts:
- distributables:./dist/
- name: deploy-staging
manual: true
commands:
- ./scripts/deploy.sh --env=staging /app/dist/
load_artefacts:
- distributables:/app/dist/
- name: deploy-prod
manual: true
commands:
- ./scripts/deploy.sh --env=production /app/dist/
load_artefacts:
- distributables:/app/dist/
```
- Run containerized builds using Docker and specified image.
- Report logs in real-time during pipeline execution (streamed to the console).
- Report test results and coverage reports.
- Save artefacts (distributables) from each stage and make them available for download.
- Report pipeline execution status back to GitFOSS.
- More integrations with Slack, GitHub, and other tools in GitFOSS.
## Installation
```bash
$ git clone https://github.com/your-github-user/gitfoss-ci.git
$ cd gitfoss-ci
$ shards build
$ ./bin/gitfoss-ci [--flags] CMD [INPUT]
```
## Usage
TODO: Write usage instructions here
## Development
TODO: Write development instructions here
## Contributing
1. Fork it (<https://gitfoss.dev/ethicdevs/gitfoss-ci/fork>)
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create a new Pull Request
## Contributors
- [Willi Wonka](https://gitfoss.dev/@willi.wonka38) - creator and maintainer