시나리오 상세

Prev Next

SourceDeploy 프로젝트의 시나리오 상세를 조회합니다.

요청

API URL

GET 	{SOURCEDEPLOY_API_URL}/project/{projectId}/stage/{stageId}/scenario/{scenarioId}

요청 Parameter

항목 타입 설명 비고
projectId string 프로젝트 ID projectList API로 조회
stageId string stage ID stageList API로 조회
scenarioId string 시나리오 ID scenarioList API로 조회

요청 Query

없음

요청 Body

없음

응답

응답 Body

{
    "project": {
        "id": "number",
        "name": "string"
    },
    "stage": {
        "id": "number",
        "name": "string"
    },
    "id": "number",
    "name": "string",
    "description": "string",
    "type": "string",
    "config": "TScenarioServer" | "TScenarioAutoScaling" | "TSecnarioKubernetesService" | "TSecnarioObjectStorage"
}
항목 타입 설명 비고
project.id number 프로젝트 id
project.name string 프로젝트 이름
stage.id number stage id
stage.name string stage 이름
id number 시나리오 id
name string 시나리오 이름
description string 시나리오 설명
type string 배포타겟 type "Server" | "AutoScalingGroup" | "KubernetesService" |"ObjectStorage"
Config TScenarioServer | TScenarioAutoScalingGroup | TSecnarioKubernetesService 시나리오 설정 type="Server"일때, TScenarioServer
type="AutoScalingGroup" 일때, TScenarioAutoScalingGroup
type="KubernetesService" 일때,TSecnarioKubernetesService
type="ObjectStorage" 일때,TSecnarioObjectStorage

TScenarioServer

{
    "strategy": "string",
    "file": {
        "type": "string",
        "ObjectStorage": {
            "bucket": "string",
            "object": "string"
        },
        "SourceBuild": {
            "id": "number",
            "name": "string"
        }
    },
    "rollback": "boolean",
    "cmd": {
        "pre": [
            {
                "user": "string",
                "cmd": "string"
            }
        ],
        "deploy": [
            {
                "sourcePath": "string",
                "deployPath": "string"
            }
        ],
        "post": [
            {
                "user": "string",
                "cmd": "string"
            }
        ]
    },
}
항목 타입 설명 비고
strategy string 배포 전략 "normal"
file.type string 배포 파일 type "ObjectStorage" | "SourceBuild" | "later"
file.ObjectStorage.bucket string ObjectStorage 버킷이름 file.type=ObjectStorage
file.ObjectStorage.object string ObjectStorage object 위치 file.type=ObjectStorage
file.SourceBuild.id number SourceBuild id file.type=SourceBuild
file.SourceBuild.name string SourceBuild 프로젝트 이름 file.type=SourceBuild
rollback boolean 배포 실패 시 롤백
cmd.pre.user string 배포 전 실행>실행 계정
cmd.pre.cmd string 배포 전 실행>실행 명령
cmd.deploy.sourcePath string 파일 배포> 소스 파일 경로
cmd.deploy.deployPath string 파일 배포>배포 경로
cmd.post.user string 배포 후 실행>실행 계정
cmd.post.cmd string 배포 후 실행>실행 명령

TScenarioAutoScalingGroup

{
    "strategy": "string",
    "sequence": "boolean",
    "file": {
        "type": "string",
        "ObjectStorage": {
            "bucket": "string",
            "object": "string",
        },
        "SourceBuild": {
            "id": "number",
            "name": "string"
        }
    },
    "rollback": "boolean",
    "cmd": {
        "pre": [
            {
                "user": "string",
                "cmd": "string"
            }
        ],
        "deploy": [
            {
                "sourcePath": "string",
                "deployPath": "string"
            }
        ],
        "post": [
            {
                "user": "string",
                "cmd": "string"
            }
        ]
    },
    "loadBalancer": {
        "loadBalancerTargetGroupNo": "number",
        "loadBalancerTargetGroupName": "string",
        "deleteAsg": "boolean",
        "deleteServer": "boolean" 
    }
}
항목 타입 설명 비고
strategy string 배포 전략 "normal" | "blueGreen"
sequence boolean 순차 배포 여부
file.type string 배포 파일 type "ObjectStorage" | "SourceBuild" | "later"
file.ObjectStorage.bucket string ObjectStorage 버킷이름 file.type=ObjectStorage
file.ObjectStorage.object string ObjectStorage object 위치 file.type=ObjectStorage
file.SourceBuild.id number SourceBuild id file.type=SourceBuild
file.SourceBuild.name string SourceBuild 프로젝트 이름 file.type=SourceBuild
rollback boolean 배포 실패 시 롤백
cmd.pre.user string 배포 전 실행>실행 계정
cmd.pre.cmd string 배포 전 실행>실행 명령
cmd.deploy.sourcePath string 파일 배포> 소스 파일 경로
cmd.deploy.deployPath string 파일 배포>배포 경로
cmd.post.user string 배포 후 실행>실행 계정
cmd.post.cmd string 배포 후 실행>실행 명령
loadBalancer.loadBalancerTargetGroupNo number 로드밸런서 Target Group no strategy=blueGreen
loadBalancer.loadBalancerTargetGroupName string 로드밸런서 Target Group 이름 strategy=blueGreen
loadBalancer.deleteAsg boolean 기존 Auto Scaling Group 삭제 여부 strategy=blueGreen
loadBalancer.deleteServer boolean 기존 Auto Scaling Group 내 서버 삭제 여부 strategy=blueGreen

TSecnarioKubernetesService

{	
    "manifest": {
        "type": "string",
        "url": "string",
        "serverUrl": "string",
        "owner": "string",
        "repository": "string",
        "branch": "string",
        "path": ["string"]
    },
    "strategy": "string",
    "canaryConfig": {
        "canaryCount": "number",
        "analysisType": "string",
        "timeout": "number",
        "prometheus": "string",
        "env": {
            "baseline": "string",
            "canary": "string"
        },
        "metrics": [
            {
                "name": "string",
                "successCriteria": "string",
                "queryType": "string",
                "weight": "number",
                "metric": "string",
                "filter": "string",
                "query": "string"
            }
        ],
        "analysisConfig": {
            "duration": "number",
            "delay": "number",
            "interval": "number",
            "step": "number"
        },
        "passScore": "number"
    }
}
항목 타입 설명 비고
strategy string 배포 전략 "rolling" |"blueGreen" |"canary"
manifest.type string 매니페스트 파일 저장소 "SourceCommit" | "Github Enterprise Server"
manifest.url string 리포지토리 URL manifest.type=Github Enterprise Server 이고, SSH Key로 로그인 한 경우
manifest.serverUrl string 서버 URL manifest.type=Github Enterprise Server 이고, OAuth, Personal Access Token, Username/Password 으로 로그인한 경우
manifest.owner string 소유자 manifest.type=Github Enterprise Server 일 때
manifest.repository string 리파지토리
manifest.branch string 리파지토리 브랜치
manifest.path string[] 파일 위치
canaryConfig.analysisType string Canary 분석 방법 strategy=canary 일때,
"manual" | "auto"
canaryConfig.timeout number 배포/취소 최대시간 strategy=canary & canaryConfig.analysisType=manual 일때
canaryConfig.canaryCount number Baseline, Canary Pod 개수 strategy=canary & (canaryConfig.analysisType=manual || canaryConfig.analysisType=auto) 일때
canaryConfig.prometheus string Prometheus Url strategy=canary & canaryConfig.analysisType=auto 일때
canaryConfig.env.baseline string 분석 환경변수 > baseline strategy=canary & canaryConfig.analysisType=auto 일때
canaryConfig.env.canary string 분석 환경변수 > canary strategy=canary & canaryConfig.analysisType=auto 일때
canaryConfig.metrics.name string 메트릭 이름 strategy=canary & canaryConfig.analysisType=auto 일때
canaryConfig.metrics.successCriteria string 성공 기준 strategy=canary & canaryConfig.analysisType=auto 일때
"base" | "canary"
canaryConfig.metrics.queryType string 쿼리 타입 strategy=canary & canaryConfig.analysisType=auto 일때
"default" | "promQL"
canaryConfig.metrics.weight number 가중치 strategy=canary & canaryConfig.analysisType=auto
canaryConfig.metrics.metric string 메트릭 strategy=canary & canaryConfig.analysisType=auto &canaryConfig.metrics.queryType="default"
canaryConfig.metrics.filter string Filter strategy=canary & canaryConfig.analysisType=auto &canaryConfig.metrics.queryType="default"
canaryConfig.metrics.query string 쿼리 strategy=canary & canaryConfig.analysisType=auto & canaryConfig.metrics.queryType="promQL"
canaryConfig.analysisConfig.duration number 분석 시간 strategy=canary & canaryConfig.analysisType=auto
canaryConfig.analysisConfig.delay number 분석 지연 시간 strategy=canary & canaryConfig.analysisType=auto
canaryConfig.analysisConfig.interval number 분석 주기 strategy=canary & canaryConfig.analysisType=auto
canaryConfig.analysisConfig.step number Metric 수집 주기 strategy=canary & canaryConfig.analysisType=auto
canaryConfig.passScore number 분석 성공 점수 strategy=canary & canaryConfig.analysisType=auto

TSecnarioObjectStorage

{
    "file": {
        "type": "string",
        "ObjectStorage": {
            "bucket": "string",
            "object": "string"
        },
        "SourceBuild": {
            "id": "number",
            "name": "string"
        }
    },
    "path": [
            {
                "sourcePath": "string",
                "deployPath": "string"
            }
    ]
}
항목 타입 설명 비고
file.type string 배포 파일 type "ObjectStorage" | "SourceBuild" | "later"
file.ObjectStorage.bucket string ObjectStorage 버킷이름 file.type=ObjectStorage
file.ObjectStorage.object string ObjectStorage object 위치 file.type=ObjectStorage
file.SourceBuild.id number SourceBuild id file.type=SourceBuild
file.SourceBuild.name string SourceBuild 프로젝트 이름 file.type=SourceBuild
path.sourcePath string 소스 파일 경로
path.deployPath string 배포 경로