# 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) 각 앱/서비스의 패키지 및 모듈 의존성을 설치합니다. ```bash make setup ``` ### 코드 분석 및 린트 (Analyze) 서브프로젝트별 정적 분석을 수행합니다. ```bash make runner-analyze make client-analyze ``` ### 테스트 실행 (Test) #### 개별 서브프로젝트 테스트 ```bash make runner-test make client-test make core-test ``` #### 통합 테스트 실행 (전체 서브프로젝트) ```bash make test ``` ## 서브프로젝트 상세 안내 각 서브프로젝트의 내부 아키텍처 및 상세 사용 방법은 하위 경로의 README 문서를 참조하세요: - [OTO Runner README](apps/runner/README.md) - [OTO Client README](apps/client/README.md) - OTO Core Server: [services/core/](services/core/)