명령어
sdp init
프로젝트에 SDP 설정 파일을 생성합니다.
# 기본 설정 파일 생성 (.sdp/config.yaml)
sdp init
# 기존 파일 덮어쓰기
sdp init --force
sdp push [target]
파일을 서버에 배포합니다.
# 기본 설정 파일 사용 (.sdp/config.yaml)
sdp push
# 특정 타겟 사용 (.sdp/engine.yaml)
sdp push engine
# 전체 경로 지정
sdp push -c .sdp/prod.yaml
sdp status [target]
서버 연결 상태를 확인합니다.
sdp status
# 출력 예시
서버 상태:
온라인: 예
버전: 0.1.0
호스트명: DEPLOY-SERVER
대기 중인 배포: 0
sdp backups [--dest=PATH]
서버의 백업 목록을 조회합니다.
# 전체 백업 목록
sdp backups
# 특정 경로 필터
sdp backups --dest="C:\Saige\SaigeVIMS"
sdp rollback --id=N [--restart=MODE]
특정 백업으로 롤백합니다.
# 백업 ID 15로 롤백 (기본: cold 재시작)
sdp rollback --id=15
# 파일만 복원 (서비스 재시작 안함)
sdp rollback --id=15 --restart=none
sdp history [--dest=PATH] [--limit=N]
배포 이력을 조회합니다.
# 최근 배포 이력
sdp history
# 특정 경로, 최근 50개
sdp history --dest="C:\Saige\SaigeVIMS" --limit=50
sdp logs [target] [-n LINES]
서버 측 로그 파일을 실시간으로 조회합니다. (tail -f와 유사)
# 기본 설정 파일 사용 (마지막 5줄부터)
sdp logs
# 특정 타겟
sdp logs engine
# 마지막 20줄부터 표시
sdp logs engine -n 20
설정 파일에 log.file이 지정되어 있어야 합니다. Ctrl + C로 종료.
설정 파일 구조
프로젝트 루트에 .sdp/ 폴더를 만들고 설정 파일을 작성합니다.
my-project/
├── .sdp/
│ ├── config.yaml # 기본 (sdp push)
│ ├── staging.yaml # 스테이징 (sdp push staging)
│ └── prod.yaml # 운영 (sdp push prod)
└── src/
기본 구조
# .sdp/config.yaml
# 서버 연결 정보
server:
host: vmd-dev.ws.saige.in
port: 50051
api_key: "your-secret-api-key"
# 서비스 설정 (선택)
service:
name: saige-vims-server # null이면 서비스 제어 안함
restart: cold # none | hot | cold
# 파일 매핑 (여러 개 가능)
files:
- source: ./dist
destination: C:\Saige\SaigeVIMS
includes:
- "**/*"
excludes:
- "*.map"
# 로그 조회 설정 (선택)
log:
file: "C:\\Saige\\SaigeVIMS\\logs\\vims_server.log"
설정 필드 설명
server
| 필드 | 필수 | 설명 |
|---|---|---|
host | O | 서버 IP 또는 호스트명 |
port | O | gRPC 포트 (기본: 50051) |
api_key | O | 인증용 API 키 |
service
| 필드 | 필수 | 설명 |
|---|---|---|
name | X | Windows 서비스 이름 (null이면 서비스 제어 안함) |
restart | X | 재시작 모드 (기본: none) |
restart 모드
| 값 | 동작 | 사용 사례 |
|---|---|---|
none | 서비스 제어 안함 | 웹 정적 파일 |
hot | 배포 후 재시작 | JAR (버전 다른 경우) |
cold | 종료 → 배포 → 시작 | EXE/DLL, 동일 버전 JAR |
files
| 필드 | 필수 | 설명 |
|---|---|---|
source | O | 로컬 소스 경로 (상대/절대) |
destination | O | 서버 배포 경로 |
includes | X | 포함할 파일 패턴 (기본: 모든 파일) |
excludes | X | 제외할 파일 패턴 |
파일 패턴 (glob)
| 패턴 | 설명 |
|---|---|
* | 현재 디렉터리의 모든 파일 |
**/* | 모든 하위 디렉터리 포함 |
*.dll | 현재 디렉터리의 dll 파일 |
**/*.pyd | 모든 하위의 pyd 파일 |
config/*.json | config 폴더의 json 파일 |
※ excludes가 includes보다 우선합니다.
log
| 필드 | 필수 | 설명 |
|---|---|---|
file | O | 서버 측 로그 파일 절대 경로 |
※ log 섹션 전체가 선택 사항입니다. 생략하면 sdp logs 명령을 사용할 수 없습니다.
※ 지정한 경로는 에이전트의 allowed_paths 범위 내에 있어야 합니다.
로그 조회
sdp logs 명령으로 서버에서 실행 중인 서비스의 로그를 실시간으로 확인할 수 있습니다.
설정
설정 파일에 log.file 필드로 서버 측 로그 파일의 절대 경로를 지정합니다.
# .sdp/config.yaml
log:
file: "C:\\Saige\\SaigeVIMS\\logs\\vims_server.log"
사용법
# 마지막 5줄부터 실시간 스트리밍
sdp logs
# 마지막 50줄부터
sdp logs -n 50
# 특정 타겟
sdp logs engine -n 20
동작 방식
- 초기 연결 시 마지막 N줄을 표시한 뒤 새로 추가되는 줄을 실시간으로 스트리밍합니다.
- 로그 파일 로테이션(파일 교체)을 자동으로 감지합니다.
- Ctrl + C로 스트리밍을 종료합니다.
설정 예시
웹 프론트엔드 (정적 파일)
서비스 제어 없이 파일만 배포
server:
host: vmd-dev.ws.saige.in
port: 50051
api_key: "dev-api-key"
service:
name: null
restart: none
files:
- source: ./dist
destination: C:\Saige\SaigeVIMS\client
includes:
- "**/*"
excludes:
- "*.map"
Spring Boot JAR (핫 배포)
다른 버전 JAR 배포 후 서비스 재시작
server:
host: vmd-dev.ws.saige.in
port: 50051
api_key: "dev-api-key"
service:
name: saige-vims-server
restart: hot
files:
- source: ./target
destination: C:\Saige\SaigeVIMS\server
includes:
- "*.jar"
excludes:
- "*.original"
C++ 엔진 (EXE/DLL)
실행 중인 파일 교체를 위해 콜드 배포 + 로그 조회
server:
host: vmd-dev.ws.saige.in
port: 50051
api_key: "dev-api-key"
service:
name: saige-vims-server
restart: cold
files:
- source: ./x64/Release
destination: C:\Saige\SaigeVIMS\VideoProcessor
includes:
- "*.exe"
- "*.dll"
excludes:
- "*.pdb"
- "*test*"
log:
file: "C:\\Saige\\SaigeVIMS\\logs\\vims_server.log"
여러 환경 (dev/staging/prod)
환경별로 설정 파일 분리
# .sdp/config.yaml (개발)
server:
host: vmd-dev.ws.saige.in
api_key: "dev-key"
...
# .sdp/staging.yaml
server:
host: 192.168.1.200
api_key: "staging-key"
...
# .sdp/prod.yaml
server:
host: 10.0.0.100
api_key: "prod-key"
...
사용:
sdp push # 개발 서버
sdp push staging # 스테이징 서버
sdp push prod # 운영 서버