https://github.com/hubblo-org/carenage
This is a MIRROR from https://gitlab.com/hubblo/carenage/
https://github.com/hubblo-org/carenage
Last synced: 5 months ago
JSON representation
This is a MIRROR from https://gitlab.com/hubblo/carenage/
- Host: GitHub
- URL: https://github.com/hubblo-org/carenage
- Owner: hubblo-org
- Created: 2021-09-17T09:53:27.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-01-28T13:59:21.000Z (over 1 year ago)
- Last Synced: 2025-07-08T06:51:50.906Z (12 months ago)
- Language: Rust
- Homepage:
- Size: 4.15 MB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# carenage
*Carenage* is a continuous integration tool meant to make environmental evaluation easier for software projects. Used in CI scripts, it queries needed metrics and metadata during the execution of a CI job to insert them into a database. Afterwards, the data is available as JSON objects through requests to a RESTful API and visualisable in a dashboard.
*Carenage* (*careening* in English) is a series of operations made on the hull of a ship in order to inspect, clean or repair it. Environmental evaluation can be difficult to put into place for software development teams. With data recovered during tests or benchmarks, *Carenage* aims to simplify this and allow for better evaluation and better application of eco-design practices.
## Development
### Back-end
The `carenage` project is divided into several packages, with three binaries (`api`, `carenaged`, `carenage-cli`) and one library (`database`).
- `carenaged` contains the daemon program that inserts metadata and metrics into the database.
- `carenage-cli` contains the command-line interface program that can start and stop the execution of the daemon inside scripts.
- `api` contains the web server that receives requests and sends responses through a RESTful API.
The `database` library contains all methods needed to communicate with the database, most data structures used throughout the project, and modules to communicate with other external services (most notably [`boagent`](https://github.com/boavizta/boagent])).
To create environmental impacts metrics, `carenage` queries `boagent` to receive data on the hardware for the computer running processes. This data is made of environmental impact metrics (through queries to [boaviztapi](https://github.com/boavizta/boaviztapi)), and energy consumption metrics (through [scaphandre](https://github.com/hubblo-org/scaphandre)). `carenage` queries information on the computer configuration, then, throughout a CI script execution, queries information for each process running on the computer. All these pieces of information are then inserted into the database with a timestamp.
#### Building the project
With `rust` and `cargo` installed:
```
cd carenage
make build_debug
```
#### Testing
Unit and integrations tests are implemented for the different packages of the project:
```
cd carenage
make test
```
Some tests need a Postgres database set up to apply migrations and fixtures. If you have Docker installed, `make compose_dev` will set up the development / testing environment.
### Front-end
#### Setup
With `npm` installed, you can do
```
cd dashboard
make install
```
to setup needed dependencies for the project. Then, with `make run_dev`, this will launch the server for the dashboard.
#### Testing
Unit and integration tests are executed with
```
cd dashboard
make component_test
```
end-to-end tests with
```
cd dashboard
make e2e_test
```
For integration testing and mocking responses from external services like `Boagent`, [msw](https://mswjs.io/) is used. You can add handlers for specific
URLs in `src/mocks/handlers.ts`. In a development environment, those will be able to handle fetching valid URLs by the server code, and render data on the adequate pages. Handlers work either in the browser and in a Node environment.