Appearance
qvsctl pipeline test
CI/CD Adapter から生成する Pipeline Manifest を試験します。
使い方
qvsctl pipeline test
説明
モジュールのルートディレクトリにある test
ディレクトリ配下に配置したテストケースを実行し、Adapter から生成する Pipeline Manifest を試験します。
リモートにあるGitリポジトリのadapterをモジュールとして利用する場合は、リポジトリへの接続方法に応じて以下の環境変数を設定してください。
- HTTPS接続用:
GIT_TOKEN
- SSH接続用:
GIT_SSH_KEY_PATH
Warning
これまでGitアクセストークンの指定にはGITHUB_TOKEN
という環境変数を用いていましたが、こちらは非推奨となります。
HTTPS接続にはGIT_TOKEN
を使用してください。
// Gitのアクセストークンを環境変数GIT_TOKENに設定
export GIT_TOKEN=ghp_AbCdefghiJklmnopqrStuVwXyz1234567890
// SSH接続用の秘密鍵の絶対パスを環境変数GIT_SSH_KEY_PATHに設定
export GIT_SSH_KEY_PATH=/home/user/.ssh/id_ecdsa
以下は simple
という Adapter を試験する際のディレクトリ構成の一例です。
.
├── pipeline
│ └── deploy
│ └── simple.cue
└── test
└── pipeline
└── deploy
├── simple
│ ├── qvs.yaml # 試験対象の Adapter を利用する QVS Config
│ └── results
│ └── simple.yml # コンパイルした結果、生成を期待する Manifest
└── test.cue # テスト定義ファイル
テスト定義ファイルは、以下の仕様に従ってCUE言語で記述します。
designpattern_test
というパッケージ名のCUEファイルであること。- テストケースは以下のスキーマに従うこと。
- テストをSKIPしたい場合、
pipeline
キーで"-"
を指定すること。
cue
#TestCase: {
config: string // QVS Config のファイルパス
param: string // Parameter ファイルのファイルパス
expected: {
pipeline: string // 期待値 Manifest を配置するディレクトリ
}
}
例えば、テストケースを以下のように定義します。ここで、objectのキー(例ではsimple
)がテストケース名に該当します。
simple: {
config: "./simple/qvs.yaml"
expected: {
pipeline: "./simple/results"
}
}
コマンド実行時の出力例は以下のとおりです。成功時には"PASS"という文字列を、失敗時には期待値との差分を表示します。
// 成功例
qvsctl pipeline test
PASS
// 失敗例
qvsctl pipeline test
--- FAIL: TestDesignPattern (1.96s)
--- FAIL: TestDesignPattern/pipelineDeploySimple/pipeline (1.96s)
test.go:103: test failed for a command `qvsctl pipeline compile -m . -c test/pipeline/deploy/simple/qvs.yaml`
Manifest for tekton.dev/v1beta1.Pipeline//deploy didn't match:
--- Expected
+++ Actual
map[string]interface{}{
・
・
・
- "name": string(Inverse(multiline, string("checkouts"))),
+ "name": string(Inverse(multiline, string("checkout"))),
・
・
・
FAIL
-test.v
オプションを利用することで詳細なメッセージの表示が可能です。
qvsctl manifest test -test.v
=== RUN TestDesignPattern
=== RUN TestDesignPattern/pipelineDeploySimple/pipeline
--- PASS: TestDesignPattern (2.03s)
--- PASS: TestDesignPattern/pipelineDeploySimple/pipeline (2.03s)
PASS
また、-test.run
オプションを利用することで特定のテストのみの実行が可能です。その他のオプションについては以下を参照してください。
オプション
-compiler.preserve テスト時に生成したManifestを削除せずに残します
-log_dir string 指定したディレクトリにログ出力をします
-test.parallel n 最大 n 並列でテストを実行します (Default: 8)
-test.run regexp 正規表現にマッチした test caseのみ実行します
-test.timeout d 期間 d (golang の time.ParseDuration で解析可能な文字列) が過ぎた場合 panic でテストを終了します、0指定で timeout は無効になります (Default: 0)
-test.v 詳細なログを出力