oto/README.md
toki 365995900e feat(runner): output port 경계 작업을 반영한다
runner 출력 경계 분리의 첫 계약 작업을 완료하고 후속 subtask와 로드맵 상태를 함께 기록한다. workspace 포트와 local smoke 기준도 독립 Control Plane 방향에 맞춰 정리한다.
2026-06-07 13:12:46 +09:00

2.8 KiB

OTO Monorepo

YAML 기반 CI/CD 파이프라인 자동화 도구 OTO의 Monorepo 프로젝트입니다. 독립 Control Plane 분리 마이그레이션을 통해 Runner, Client, Core Service로 컴포넌트를 분리하여 관리합니다.

프로젝트 구조

/
├── apps/
│   ├── runner/       # Dart CLI 기반 OTO Runner (파이프라인 실행 엔진)
│   └── client/       # Flutter 기반 OTO Console Client (독립 제어 콘솔)
├── services/
│   └── core/         # Go 기반 OTO Control Plane Server (Runner Registry & Bootstrap)
└── Makefile          # Monorepo 작업을 위한 루트 진입점 Helper

시작하기

루트 Makefile을 통해 모든 서브프로젝트의 의존성 설치, 분석, 테스트 작업을 통합 관리할 수 있습니다.

Workspace 포트와 환경 기준

OTO는 독립 Control Plane 제품 경로를 기준으로 포트와 환경값을 기록합니다. iop Edge 또는 wire 포트는 OTO workspace 포트 표준의 source of truth가 아닙니다.

표면 표준 후보 호환 기준
OTO Core HTTP backend host publish 18020 로컬 실행 기본값 OTO_CORE_ADDR 미설정 시 127.0.0.1:8080은 기존 개발 호환 경로로 유지
Flutter client/web preview frontend preview 13020 preview 포트는 UI dev server 포트이며, 서버 연결 URL은 OTO_SERVER_HTTP_URL로 별도 지정
runner bootstrap/release OTO_RUNNER_RELEASE_BASE_URL release base URL은 https://만 기록하고, token/credential/private endpoint 원문은 tracked 문서에 남기지 않음

Core를 workspace publish 포트로 띄울 때는 OTO_CORE_ADDR=0.0.0.0:18020처럼 listen 주소를 명시합니다. Flutter web preview는 cd apps/client && flutter run -d chrome --web-port=13020을 기준 후보로 둡니다. bootstrap command와 artifact URL 문서는 public validation 기준과 source of truth만 남기고, enrollment token이나 private release host는 런타임 환경에서만 주입합니다.

의존성 설치 (Setup)

각 앱/서비스의 패키지 및 모듈 의존성을 설치합니다.

make setup

코드 분석 및 린트 (Analyze)

서브프로젝트별 정적 분석을 수행합니다.

make runner-analyze
make client-analyze

테스트 실행 (Test)

개별 서브프로젝트 테스트

make runner-test
make client-test
make core-test

통합 테스트 실행 (전체 서브프로젝트)

make test

서브프로젝트 상세 안내

각 서브프로젝트의 내부 아키텍처 및 상세 사용 방법은 하위 경로의 README 문서를 참조하세요: