Appearance
qvsctl pipeline diff
Qmonus Value Stream に登録しているAssemblyLine、Pipeline/Taskとファイルに記載されているリソースとの差分を取ります。
使い方
qvsctl pipeline diff -f ${FILENAME} -p ${projectName}
説明
Qmonus Value Stream に登録されているAssemblyLine、Pipeline/TaskとManifestファイルに記載されているリソースとの差分を取ります。 apply
の前に実行することでリソースの予期しない変更を予防できます。
コマンドを実行する場合は、事前に qvsctl auth
でQmonus Value Stream APIにてユーザを認証する必要があります。
-p
オプションでは差分を取りたいリソースが存在するProject Nameを記載してプロジェクトを指定します。
-f
オプションで手元にあるManifestファイルを参照します。
// e.g. Project Name:vs-tutorial-c8zdr79eに登録されてあるリソースとManifesファイルとの差分を取る
qvsctl pipeline diff -f task.yml -p vs-tutorial-c8zdr79e
上記コマンドの出力結果は下記のようになります。
diff
diff -u -N /tmp/LIVE-808775948/tekton.dev.v1beta1.Task.vs-tutorial-c8zdr79e.hello /tmp/MERGED-362478903/tekton.dev.v1beta1.Task.vs-tutorial-c8zdr79e.hello
--- /tmp/LIVE-808775948/tekton.dev.v1beta1.Task.vs-tutorial-c8zdr79e.hello 2022-11-02 07:47:45.958398081 +0000
+++ /tmp/MERGED-362478903/tekton.dev.v1beta1.Task.vs-tutorial-c8zdr79e.hello 2022-11-02 07:47:45.958398081 +0000
@@ -5,7 +5,7 @@
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"tekton.dev/v1beta1","kind":"Task","metadata":{"annotations":{},"name":"hello","namespace":"vs-tutorial-c8zdr79e"},"spec":{"steps":[{"image":"alpine","name":"echo","script":"#!/bin/sh\necho \"Hello World\" \n"}]}}
creationTimestamp: "2022-11-02T07:43:36Z"
- generation: 1
+ generation: 2
managedFields:
- apiVersion: tekton.dev/v1beta1
fieldsType: FieldsV1
@@ -29,4 +29,4 @@
- image: alpine
name: echo
resources: {}
- script: "#!/bin/sh\necho \"Hello World\" \n"
+ script: "#!/bin/sh\necho \"Hello World !!!\" \n"
変更箇所は1行のみで、17-18行目に差分があることがわかります。 8-9行目ではTaskの内容の変更に伴い、世代数が更新されています。
オプション
-f, --filename string ファイル名、ディレクトリ、ファイルへのURLを指定
--force-conflicts trueの場合、コンフリクトが発生しても強制的に更新する
-k, --kustomize string kustomization.yamlが存在するディレクトリを指定する。-f や -R オプションと併用不可。
-p, --project string Qmonus Value StreamのProject Nameを指定
--prune 自動的に作成され設定に現れないリソースオブジェクトを自動的に削除する
--prune-whitelist stringArray デフォルトのホワイトリストを<group/version/kind>で上書きし、--pruneを実行する
-R, --recursive -f, --filenameで使用されるディレクトリを再帰的に処理する
-l, --selector string フィルタリングするためのセレクタ (ラベルクエリ)
--server-side クライアントではなくサーバー側で処理する