テンプレートガイドでは、テンプレートファイルを利用してパイプラインを作成する方法を説明します。
すでに構成されているパイプラインからJSONファイルをダウンロードした後、同じ形式の新規パイプラインを作成する方法です。
既存のパイプラインを選択して基本情報のJSONを表示>パイプラインテンプレートをダウンロードの手順でJSONファイルをダウンロードできます。
シナリオごとにサンプルテンプレートファイルを提供して、簡単にパイプラインを作成できます。
希望するシナリオにあるJSONファイルをダウンロードすると、中括弧({}
)で要求するデータ全体を入力して使用できます。特に[環境設定]
の接頭辞が付くデータの場合、Pipeline > 環境設定にあるデータを使用するため、データが登録されている必要があります。Pipelineユーザーガイドで登録方法を確認できます。
Bake Stageの使用に関するサンプルシナリオテンプレートは、機能変更が必要であり、後日提供される予定です。
Githubからソースコードを取得してNHN Cloudビルドツールでビルド後、対象サーバーにManifest情報で配布するシナリオです。
登録されているJSONファイルをダウンロード後、中括弧で表示されたデータに対する情報を入力する必要があります。
ソースステージのうちGithubを基準にガイドが作成されました。Pipelineステージガイドでステージの詳細ガイドが確認できます。
{
"type": "githubSource",
"name": "source",
"refId": "1",
"requisiteStageRefIds": [],
"sourceRepo": "{[環境設定]ソースリポジトリ設定に保存されたソースリポジトリ名}",
"branch": "{配布対象ブランチ}"
},
"sourceRepo": "{ソースリポジトリ設定に保存されたソースリポジトリ名}"
で入力値を要求しており、環境設定内のソースリポジトリ設定に登録した情報の中で使用するソースリポジトリ名を確認し、"sourceRepo": "github-pipeline"
のように修正が必要です。
イメージストア設定、配布対象設定と同じように設定された名前の確認後、修正が必要です。
ビルドステージのうちNHN Cloudビルドツールを基準にガイドが作成されました。Pipelineステージガイドでステージの詳細ガイドが確認できます。
{
"type": "imageBuild",
"name": "build",
"refId": "2",
"requisiteStageRefIds": [
"1"
],
"buildImageRegistry": "{[環境設定]イメージストア設定に保存されたイメージストア名}",
"buildImageName": "{イメージ名}",
"buildImageTag": "{イメージタグ}",
"buildCommand": "{ビルドコマンド}",
"dockerfilePath": "{Dockerfileパス}",
"buildWorkDir": "",
"pushImageRegistry": "{[環境設定]ビルド結果がアップロードされるイメージストア設定に保存されたイメージストア名}",
"pushImageName": "{ビルド結果イメージ名}",
"pushImageTag": "{ビルド結果イメージタグ}",
"buildFlavorName": "c2m4",
"buildTimeout": 30,
"startArtifacts": null,
"expectedArtifacts": null
},
配布ステージはDeployステージでガイドが作成されました。Pipelineステージガイドでステージの詳細ガイドが確認できます。
{
"type": "deployManifest",
"name": "deploy",
"refId": "3",
"requisiteStageRefIds": [
"2"
],
"deployTarget": "{[環境設定]配布対象設定に保存された配布対象名}",
"manifests": [
{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": {
"labels": {
"app": "pipeline-test"
},
"name": "pipeline-test"
},
"spec": {
"replicas": 2,
"revisionHistoryLimit": 3,
"selector": {
"matchLabels": {
"app": "pipeline-test-example"
}
},
"template": {
"metadata": {
"labels": {
"app": "pipeline-test-example"
},
"name": "pipeline-test-example"
},
"spec": {
"containers": [
{
"image": "example.registry.container.nhncloud.com/test/pipelineImage:latest",
"imagePullPolicy": "Always",
"name": "pipeline-test",
"ports": [
{
"containerPort": 8080
}
]
}
]
}
}
}
}
],
"namespaceOverride": "",
"startArtifacts": null,
"expectedArtifacts": null,
"manifestArtifactId": null,
"manifestSource": "text",
"manifestArtifact": null
}
Deployステージで使用するManifest情報は配布環境に合わせて変更する必要があります。 YAMLファイルをJSON形式に変更する必要があります(ステージの変更によりコンソールUIでの作業を推奨します)。
以降のシナリオもこのシナリオを基に作成されています。
配布後、Webhookで通知を受け取るシナリオです。Webhookを受け取るURLとPayload、Methodに該当するデータを入力後、使用可能です。
PipelineステージガイドでWebhookステージの詳細ガイドが確認できます。
{
"type": "webhook",
"name": "webhook",
"refId": "4",
"requisiteStageRefIds": [
"3"
],
"url": "{Webhookを送るURL}",
"payload": null, // http request body
"customHeaders": {}, // http request header
"failFastStatusCodes": [
500 // 403,500,503
],
"method": "{}" // GET, POST, PUT, DELETE, PATCH, HEAD
}
テンプレートのTrigger領域を設定すると、Github(GitLab、イメージストア)自動実行設定ができます。 コンソール使用ガイドの自動実行部分に入力値に関する追加ガイドがあります。
triggers: [
{
"type": "git",
"branch": "{ブランチ}",
"organization": "{組織名またはユーザー名}",
"secret": "{シークレット情報}",
"project": "{プロジェクト名}",
"source": "github"
}
],
1つのパイプラインでユーザーの選択に応じて分岐処理を行うように配布できます。
このシナリオは開発環境、リアル環境のように区分された環境に配布する場合に活用できます。
例で作成されたパイプラインのように develop
, real
を選択して好きな環境に配布できます。
異なる値に変更して使用でき、この時、後ろにあるPrecondition Stageの値も同様に修正する必要があります。
PipelineステージガイドでJudgement(実行管理)、Precondition(実行条件)ステージの詳細ガイドが確認できます。
[
{
"type": "manualJudgment",
"name": "judgement",
"refId": "4",
"requisiteStageRefIds": [
"2"
],
"failPipeline": false,
"completeOtherBranchesThenFail": false,
"continuePipeline": false,
"instructions": "開発環境、リアル環境の分岐処理",
"judgmentInputs": [
{
"value": "develop" // preconditionsと同じ値である必要があります。
},
{
"value": "real" // preconditionsと同じ値である必要があります。
}
],
"notifications": []
},
{
"type": "checkPreconditions",
"name": "precondition-develop",
"refId": "5",
"requisiteStageRefIds": [
"4"
],
"preconditions": [
{
"failPipeline": false,
"type": "expression",
"context": {
"equals": true,
"targetExecutionValue": "develop", // 希望する任意の値に変更可能です。
"expression": null,
"failureMessage": null
}
}
]
},
{
"type": "checkPreconditions",
"name": "precondition-real",
"refId": "6",
"requisiteStageRefIds": [
"4"
],
"preconditions": [
{
"failPipeline": false,
"type": "expression",
"context": {
"equals": true,
"targetExecutionValue": "real", // 希望する任意の値に変更可能です。
"expression": null,
"failureMessage": null
}
}
]
},
]
テンプレートファイルダウンロード 4番シナリオでリアル環境に配布する前に承認段階を追加し、承認後に配布されるように構成できます。
Pipelineステージガイドで承認管理ステージの詳細ガイドが確認できます。
{
"type": "manualJudgment",
"name": "approve",
"refId": "8",
"requisiteStageRefIds": [
"6"
],
"instructions": "承認管理ステージです。",
"judgmentInputs": [],
"approval": true
}
パイプラインが環境ごとに分離して構成されている場合、パイプライン自体を選択して配布できます。
[
{
"type": "pipeline",
"name": "execute-pipeline",
"refId": "4",
"requisiteStageRefIds": [
"2"
],
"pipeline": "{実行したいパイプラインID}",
"waitForCompletion": true
},
{
"type": "pipeline",
"name": "execute-pipeline",
"refId": "5",
"requisiteStageRefIds": [
"3"
],
"pipeline": "{実行したいパイプラインID}",
"waitForCompletion": true
}
]
パイプラインIDはパイプラインバージョン > JSON表示をクリックして確認できます。
Blue/Green配布のためのパイプラインを構成できます。Blue/Green配布は配布戦略ガイドで詳細を確認できます。
{
"type": "disableManifest",
"name": "disable old app",
"refId": "2",
"requisiteStageRefIds": [
"1"
],
"deployTarget": "{[環境設定]配布対象設定に保存された配布対象名}", //環境設定に登録した配布対象名を入力する必要があります(例:deploy-pipeline)。
"namespace": "{namespace名}",
"mode": "dynamic",
"kind": "replicaSet",
"cluster": "replicaSet {1番ステージで作成したReplicaSetの名前}",
"criteria": "Second Newest"
}
Pipelineステージガイドで配布 - Disableステージ詳細ガイドを確認できます。
Blue/Green配布のため、PipelineでServiceを先に作成する必要があります。
Blue/Green配布のためのパイプラインを構成できます。Blue/Green配布は配布戦略ガイドで詳細を確認できます。
7番のシナリオとほぼ同じで、サービスモニタリングのための機能 - Webhookステージが追加されました。
{
"type": "webhook",
"name": "Monitoring Application",
"refId": "3",
"requisiteStageRefIds": [
"1"
],
"ifStageFailType": "IGNORE_THE_FAILURE",
"url": "{Serviceの状態を確認できるURL}", // サービスの状態を確認できるURLを追加します。
"payload": null,
"customHeaders": {},
"failFastStatusCodes": [
500
],
"method": "GET"
}