oto/assets/yaml/sample/14_shell_process.yaml

61 lines
1.4 KiB
YAML

---
# [샘플] 셸 실행 + 프로세스 제어
property:
workspace: /path/to/project
serverPort: 8080
pipeline:
id: main
workflow:
- exe: check-port # 포트 사용 중인지 확인
- if:
condition-bool: <!property.portInUse> == true
on-true:
- exe: kill-process # 기존 프로세스 종료
- exe: run-server # 서버 프로세스 실행
- exe: shell-cmd # 셸 명령 실행
- exe: shell-script # 셸 스크립트 파일 실행
commands:
# 포트 사용 여부 확인
- command: ProcessPortUse
id: check-port
param:
port: <!property.serverPort>
setPortUse: <@property.portInUse>
# 특정 포트 프로세스 종료
- command: ProcessKill
id: kill-process
param:
port: <!property.serverPort>
# 프로세스 백그라운드 실행
- command: ProcessRun
id: run-server
param:
command: ./server
args:
- --port
- <!property.serverPort>
setProcessId: <@property.serverPid>
# 인라인 셸 명령 (여러 줄)
- command: Shell
id: shell-cmd
param:
commands:
- cd <!property.workspace>
- echo "현재 디렉토리: $(pwd)"
- ls -la
setMessage: <@property.shellOutput>
# 외부 셸 스크립트 파일 실행
- command: ShellFile
id: shell-script
param:
path: <!property.workspace>/scripts/deploy.sh
args:
- <!property.version>
- prod