Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 39 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,52 @@
# Watchman Cpp
Сервис для запуска задач и тестов. Оркестратор контейнеров, в которых выполняется код от пользователей.
Сервис для запуска задач и тестов. Оркестратор Docker-контейнеров, в которых выполняется код от пользователей.

## Сборка проекта
Для сборки прокета необходимо:

— установить в систему библиотеки: fmt, boost 1.66 или выше, curl;

— обновить самбодуль с DockerClient:
```bash
— обновить самбодули:
```shell
git submodule update --init --recursive
```

В проект исходниками скопированы restinio, так как не планируем, чтобы они менялись.
Для сборки выполните:

```shell
cmake -B build/
cmake --build build/
```

## Запуск

Перед запуском склонируйте к себе [проект с нашими Docker-образами.](https://github.com/senjun-team/senjun-images) Выполните в нем скрипт, который собирает все образы кроме самого тяжелого:

```shell
sh create_images.sh
```

После того как образы собраны, можно запускать сервис. Он лежит в `build/bin`:

```shell
./watchman_cpp
```

Рядом с ним лежит конфиг `watchman_cpp_config.json`. Чтобы поменять количество контейнеров, вносите в него изменения и перезапускайте сервис.

Если все в порядке, при запуске сервиса вы увидите примерно такой лог:

```
...
[2025-11-16 13:57:06.058] [sync_logger] [info] Service launched
[2025-11-16 13:57:06.059] [sync_logger] [info] Watchman working on 8000 port
```

Теперь можно пробовать его курлить.

## API
У сервиса единственная апишка `/check`:
```
```shell
curl -X 'POST' \
'http://127.0.0.1:8000/check' \
-H 'accept: application/json' \
Expand All @@ -28,12 +59,14 @@ curl -X 'POST' \
```

Ответ:
```
```json
{"error_code":0,"output":"123","tests_error_code":0,"tests_error":""}
```

## Тестирование Docker API

Нужно на случай, если в вашей системе что-то не так с самим докером.

https://docs.docker.com/reference/api/engine/v1.41/#tag/Container/operation/ContainerList

```shell
Expand Down