Skip to content

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                     クライアントではなくサーバー側で処理する