シナリオの作成

Prev Next

Classic/VPC環境で利用できます。

デプロイシナリオを作成します。

リクエスト

リクエスト形式を説明します。リクエスト形式は次の通りです。

メソッド URI
POST /api/v1/project/{projectId}/stage/{stageId}/scenario

リクエストヘッダ

SourceDeploy APIで共通して使用されるヘッダの詳細は、SourceDeployのリクエストヘッダをご参照ください。

リクエストパスパラメータ

リクエストパスパラメータの説明は次の通りです。

フィールド タイプ 必須の有無 説明
projectId String Required プロジェクト ID
stageId String Required デプロイステージ ID

リクエストボディ

リクエストボディの説明は次の通りです。

フィールド タイプ 必須の有無 説明
name String Required デプロイシナリオ名
  • 英数字、記号の「-」、「_」を組み合わせて1~100文字以内で入力
description String Optional デプロイシナリオの説明
config Object Required デプロイターゲットの設定

TScenarioServer

TScenarioServerの説明は次の通りです。

フィールド タイプ 必須の有無 説明
strategy String Required デプロイ戦略
  • normal: 基本 (有効値)
sequence Boolean Optional 順次デプロイかどうか
  • true (デフォルト) | false
    • true: 順次デプロイ
    • false: 同時デプロイ
file Object Required デプロイファイル情報
file.type String Required デプロイファイルの保存場所
  • ObjectStorage | SourceBuild | later
    • ObjectStorage: Object Storage
    • SourceBuild: SourceBuild
    • later: 後で設定
file.ObjectStorage Object Conditional Object Storage情報
  • file.typeObjectStorageの場合、下位情報を含めて必ず入力
file.ObjectStorage.bucket String Conditional バケット名
file.ObjectStorage.object String Conditional ファイル名
file.SourceBuild Object Conditional SourceBuild情報
  • file.typeSourceBuildの場合、下位情報を含めて必ず入力
file.SourceBuild.id Number Conditional ビルドプロジェクト ID
rollback Boolean Required デプロイ失敗時、ロールバックは使用するか
  • true | false
    • true: 使用
    • false: 使用しない
cmd.pre Array Optional デプロイ前の実行コマンドリスト
cmd.deploy Array Optional ファイルデプロイパスリスト
cmd.post Array Optional デプロイ後の実行コマンドリスト

pre

preの説明は次の通りです。

フィールド タイプ 必須の有無 説明
user String Optional 実行アカウント
cmd String Optional 実行コマンド

deploy

deployの説明は次の通りです。

フィールド タイプ 必須の有無 説明
sourcePath String Optional ソースファイルのパス
deployPath String Optional デプロイのパス

post

postの説明は次の通りです。

フィールド タイプ 必須の有無 説明
user String Optional 実行アカウント
cmd String Optional 実行コマンド

TScenarioAutoScalingGroup

TScenarioAutoScalingGroupの説明は次の通りです。

フィールド タイプ 必須の有無 説明
strategy String Required デプロイ戦略
  • normal | blueGreen
    • normal: 基本
    • blueGreen: ブルー/グリーン
sequence Boolean Optional 順次デプロイかどうか
  • true (デフォルト) | false
    • true: 順次デプロイ
    • false: 同時デプロイ
file Object Required デプロイファイル情報
file.type String Required デプロイファイルの保存場所
  • ObjectStorage | SourceBuild | later
    • ObjectStorage: Object Storage
    • SourceBuild: SourceBuild
    • later: 後で設定
file.ObjectStorage Object Conditional Object Storage情報
  • file.typeObjectStorageの場合、下位情報を含めて必ず入力
file.ObjectStorage.bucket String Conditional バケット名
file.ObjectStorage.object String Conditional ファイル名
file.SourceBuild Object Conditional SourceBuild情報
  • file.typeSourceBuildの場合、下位情報を含めて必ず入力
file.SourceBuild.id Number Conditional ビルドプロジェクト ID
rollback Boolean Required デプロイ失敗時、ロールバックは使用するか
  • true | false
    • true: 使用
    • false: 使用しない
cmd.pre Array Optional デプロイ前の実行コマンドリスト
cmd.deploy Array Optional ファイルデプロイパスリスト
cmd.post Array Optional デプロイ後の実行コマンドリスト
loadBalancer Object Conditional ロードバランサ情報
  • strategyblueGreenの場合、下位情報を含めて必ず入力
loadBalancer.loadBalancerTargetGroupNo Number Conditional ロードバランサ Target Group ID
loadBalancer.deleteAsg Boolean Conditional 既存の Auto Scalingグループを削除するかどうか
  • true | false
    • true: 削除・返却
    • false: 維持
loadBalancer.deleteServer Boolean Conditional 既存の Auto Scalingグループ内サーバを返却するか
  • true | false
    • true: 返却
    • false: 維持
  • loadBalancer.deleteAsgtrueの場合、trueのみ入力

pre

preの説明は次の通りです。

フィールド タイプ 必須の有無 説明
user String Optional 実行アカウント
cmd String Optional 実行コマンド

deploy

deployの説明は次の通りです。

フィールド タイプ 必須の有無 説明
sourcePath String Optional ソースファイルのパス
deployPath String Optional デプロイのパス

post

postの説明は次の通りです。

フィールド タイプ 必須の有無 説明
user String Optional 実行アカウント
cmd String Optional 実行コマンド

TScenarioKubernetesService

TScenarioKubernetesServiceの説明は次の通りです。

フィールド タイプ 必須の有無 説明
strategy String Required デプロイ戦略
  • rolling | blueGreen | canary
    • rolling: Rolling
    • blueGreen: ブルー/グリーン
    • canary: カナリア
manifest Object Required マニフェスト情報
manifest.type String Required マニフェストファイルの保存場所
  • SourceCommit (有効値)
manifest.repository String Required リポジトリ名
manifest.branch String Required ブランチ名
manifest.path Array Required ファイルの保存場所リスト
canaryConfig Object Conditional カナリア分析設定
  • strategycanaryの場合、下位情報を含めて必ず入力
canaryConfig.analysisType String Conditional カナリア分析方法
  • manual | auto
    • manual: 手動
    • auto: 自動
canaryConfig.canaryCount Number Conditional ベースライン、カナリア Pod数
  • 1~10
canaryConfig.timeout Number Conditional タイムアウト(分)
  • 1~360
  • カナリアデプロイ/キャンセル決定の最大時間
  • canaryConfig.analysisTypemanualの場合、必ず入力
canaryConfig.prometheus String Conditional Prometheus Url
  • canaryConfig.analysisTypeautoの場合、必ず入力
canaryConfig.env Object Conditional 分析環境変数
  • canaryConfig.analysisTypeautoの場合、下位情報を含めて必ず入力
canaryConfig.env.baseline String Conditional 分析環境変数: ベースライン名
  • 英数字、記号の「-」、「_」を組み合わせて62文字以内で入力
canaryConfig.env.canary String Conditional 分析環境変数: カナリア名
  • 英数字、記号の「-」、「_」を組み合わせて62文字以内で入力
canaryConfig.metrics Array Conditional Metric設定リスト
  • canaryConfig.analysisTypeautoの場合、下位情報を含めて必ず入力
canaryConfig.analysisConfig Object Conditional 分析設定
  • canaryConfig.analysisTypeautoの場合、下位情報を含めて必ず入力
canaryConfig.analysisConfig.duration Number Conditional 分析時間(分)
  • 10~360
canaryConfig.analysisConfig.delay Number Conditional 分析遅延時間(分)
  • 0~60
canaryConfig.analysisConfig.interval Number Conditional 分析周期(分)
  • 1~360
  • 分析時間未満にすること
canaryConfig.analysisConfig.step Number Conditional Metric収集周期(秒)
  • 10~360
canaryConfig.passScore Number Conditional 分析成功スコア
  • 1~100
  • canaryConfig.analysisTypeautoの場合、必ず入力

metrics

metricsの説明は次の通りです。

フィールド タイプ 必須の有無 説明
name String Conditional Metric名
  • 英数字、記号の「-」、「_」を組み合わせて1~100文字以内で入力
successCriteria String Conditional 成功の基準
  • base | canary
    • base: ベースライン > カナリア
    • canary: ベースライン < Canary
queryType String Conditional クエリタイプ
  • default | promQL
weight Number Conditional Metricの重み
  • 1~100
  • 入力した Metricの重みの合計を100にすること
metric String Conditional Metricの値
  • Prometheusに設定した Metricを入力
  • queryTypedefaultの場合、必ず入力
filter String Conditional Filterの値
  • ラベル条件を入力
  • queryTypedefaultの場合、必ず入力
query String Conditional クエリ
  • queryTypepromQLの場合、必ず入力

TScenarioObjectStorage

TScenarioObjectStorageの説明は次の通りです。

フィールド タイプ 必須の有無 説明
file Object Required デプロイファイル情報
file.type String Required デプロイファイルの保存場所
  • ObjectStorage | SourceBuild | later
    • ObjectStorage: Object Storage
    • SourceBuild: SourceBuild
    • later: 後で設定
file.ObjectStorage Object Conditional Object Storage情報
  • file.typeObjectStorageの場合、下位情報を含めて必ず入力
file.ObjectStorage.bucket String Conditional バケット名
file.ObjectStorage.object String Conditional ファイル名
file.SourceBuild Object Conditional SourceBuild情報
  • file.typeSourceBuildの場合、下位情報を含めて必ず入力
file.SourceBuild.id Number Conditional ビルドプロジェクト ID
path Array Optional ファイルデプロイパスリスト

path

pathの説明は次の通りです。

フィールド タイプ 必須の有無 説明
sourcePath String Optional ソースファイルのパス
deployPath String Optional デプロイのパス

リクエスト例

リクエストのサンプルコードは次の通りです。

curl --location --request POST 'https://vpcsourcedeploy.apigw.ntruss.com/api/v1/project/2***/stage/3***/scenario' \
--header 'x-ncp-apigw-timestamp: {Timestamp}' \
--header 'x-ncp-iam-access-key: {Access Key}' \
--header 'x-ncp-apigw-signature-v2: {API Gateway Signature}' \
--header 'Content-Type: application/json' \
--data '{
    "name": "testScenario2",
    "description": "test Scenario 2",
    "config": {
        "strategy": "normal",
        "sequence": true,
        "file": {
            "type": "ObjectStorage",
            "ObjectStorage": {
                "bucket": "devtool",
                "object": "/result/build-sample.zip"
            }
        },
        "rollback": true,
        "cmd": {
            "pre": [
                {
                    "user": "root",
                    "cmd": "mv logs/app.log logs/app_$(date +%s).log"
                }
            ],
            "deploy": [
                {
                    "sourcePath": "/main.py",
                    "deployPath": "/home/root/"
                }
            ],
            "post": [
                {
                    "user": "root",
                    "cmd": "nohup python3 main.py > logs/app.log 2>&1 &"
                }
            ]
        }
    }
}'

レスポンス

レスポンス形式を説明します。

レスポンスボディ

レスポンスボディの説明は次の通りです。

フィールド タイプ 必須の有無 説明
result Object - レスポンス結果
result.id Number - デプロイシナリオ ID
result.name String - デプロイシナリオ名

レスポンスステータスコード

SourceDeploy APIで共通して使用されるレスポンスステータスコードの詳細は、SourceDeployのレスポンスステータスコードをご参照ください。

レスポンス例

レスポンスのサンプルコードは次の通りです。

{
    "result": {
        "id": 2***,
        "name": "testScenario2"
    }
}