클라이언트

개발자 PC에서 서버로 배포하기

🚀 처음이신가요? Quick Start 가이드 →
목차

명령어

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

필드필수설명
hostO서버 IP 또는 호스트명
portOgRPC 포트 (기본: 50051)
api_keyO인증용 API 키

service

필드필수설명
nameXWindows 서비스 이름 (null이면 서비스 제어 안함)
restartX재시작 모드 (기본: none)

restart 모드

값동작사용 사례
none서비스 제어 안함웹 정적 파일
hot배포 후 재시작JAR (버전 다른 경우)
cold종료 → 배포 → 시작EXE/DLL, 동일 버전 JAR

files

필드필수설명
sourceO로컬 소스 경로 (상대/절대)
destinationO서버 배포 경로
includesX포함할 파일 패턴 (기본: 모든 파일)
excludesX제외할 파일 패턴

파일 패턴 (glob)

패턴설명
*현재 디렉터리의 모든 파일
**/*모든 하위 디렉터리 포함
*.dll현재 디렉터리의 dll 파일
**/*.pyd모든 하위의 pyd 파일
config/*.jsonconfig 폴더의 json 파일

※ excludes가 includes보다 우선합니다.

log

필드필수설명
fileO서버 측 로그 파일 절대 경로

※ 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         # 운영 서버