- Add agent-task/m-cross-os-runner-bootstrap with subtasks (G07, G06) - Update roadmap phases and milestones for control-plane-product-surface - Add runner.proto definitions and regenerate code - Update HTTP server handler for runner management - Add smoke tests and update local test configurations - Update README with latest project status
90 lines
4 KiB
Markdown
90 lines
4 KiB
Markdown
# 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가 아닙니다.
|
|
기본 local 테스트 evidence는 원격 runner `ssh toki@toki-labs.com`의 `/Users/toki/agent-work/oto` checkout 기준으로 수집합니다.
|
|
|
|
| 표면 | 표준 후보 | 호환 기준 |
|
|
|------|-----------|-----------|
|
|
| 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`을 기준 후보로 둡니다.
|
|
Makefile 기준 실행은 `make core-run`과 `make client-run-web OTO_SERVER_HTTP_URL=http://toki-labs.com:18020`을 사용합니다.
|
|
bootstrap command와 artifact URL 문서는 public validation 기준과 source of truth만 남기고, enrollment token이나 private release host는 런타임 환경에서만 주입합니다.
|
|
|
|
### Runner bootstrap asset matrix
|
|
|
|
Control Plane bootstrap은 `OTO_RUNNER_RELEASE_BASE_URL` 아래의 OS/arch별 `oto` binary asset을 내려받는 것을 기준으로 합니다.
|
|
Linux와 macOS는 `tar.gz`, Windows는 `zip` archive를 사용합니다.
|
|
|
|
| OS | Arch | Release asset |
|
|
|----|------|---------------|
|
|
| Linux | x64 | `oto-linux-x64.tar.gz` |
|
|
| Linux | arm64 | `oto-linux-arm64.tar.gz` |
|
|
| macOS | x64 | `oto-macos-x64.tar.gz` |
|
|
| macOS | arm64 | `oto-macos-arm64.tar.gz` |
|
|
| Windows | x64 | `oto-windows-x64.zip` |
|
|
| Windows | arm64 | `oto-windows-arm64.zip` |
|
|
|
|
Bootstrap command 예시는 `--server-url`, `--agent-id`, `--enrollment-token`, `--release-base-url` 인자를 기준으로 하며, `--release-base-url`은 `https://` URL만 허용합니다.
|
|
Tracked 문서와 테스트 규칙에는 enrollment token, credential, 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/)
|