- Отредактируйте
.env, если требуется - Выполните
docker-compose up --build - API будет доступен на
http://localhost:8080
Если нужно управлять миграциями вручную, запустите контейнер migrate отдельно (docker-compose run migrate) или отключите автоматический запуск, установив APPLY_MIGRATIONS=false и MIGRATE_ONLY=false для сервиса, после чего поднять его можно отдельной командой docker-compose up app. На лекции в Авито говорили, что прогон миграций при каждом запуске — плохая практика, но по тз сервис должен запускаться одной командой, поэтому используется отдельный миграционный контейнер
PORT— HTTP-порт сервиса (по умолчанию 8080)POSTGRES_HOST,POSTGRES_PORT,POSTGRES_USER,POSTGRES_PASSWORD,POSTGRES_DB— параметры соединения с БДMIGRATIONS_DIR— путь до каталога миграций (по умолчаниюinternal/db/migrations)APPLY_MIGRATIONS— включение автоматического запуска миграций (по умолчанию true)MIGRATE_ONLY— если true, приложение только применит миграции и завершится
POST /team/addGET /team/get?team_name=...POST /users/setIsActiveGET /users/getReview?user_id=...POST /pullRequest/createPOST /pullRequest/mergePOST /pullRequest/reassignGET /stats/reviewers— дополнительный эндпоинт статистики (топ ревьюеров)
docker run --rm -v "$PWD":/app -w /app golang:1.23 go test ./testsdocker-compose -f docker-compose.e2e.yml up --build testerКоманда поднимает Postgres, приложение и контейнер tester, который дожидается запуска сервиса и выполняет сценарий team/add → pullRequest/create → users/bulkDeactivate. После завершения обязательно остановите окружение и удалите volume, чтобы база была чистой перед следующим запуском:
docker-compose -f docker-compose.e2e.yml down -vКонфигурация для golangci-lint хранится в .golangci.yml. Запускать можно через Docker:
docker run --rm -v "$PWD":/app -w /app golangci/golangci-lint:v1.60.3 golangci-lint run ./...Сценарий k6 (tests/load/k6.js):
VUs: 10
Длительность: 30 секунд
Эндпоинт: POST /pullRequest/create
Запуск:
docker run --rm \
-v "$PWD/tests/load":/load -w /load \
--network reviewer_assignment_service_default \
-e BASE_URL=http://app:8080 \
grafana/k6 run k6.jsКлючевые метрики:
- Всего запросов: 300 (≈9.8 req/s), 0 ошибок.
http_req_duration: среднее 12.96 ms, p(90) = 9.4 ms, p(95) = 16.38 ms, максимум = 204.9 ms.iteration_duration: среднее ≈1.01 s (включая паузы в скрипте).
После прогона теста остановите окружение docker-compose down -v.