Skip to content

qvsctl pipeline compile

CI/CD Adapter をコンパイルして Pipeline Manifest を生成します。

使い方

qvsctl pipeline compile -c ${applicationConfig} [-o ${outputFileOrDir}] [--prefix ${prefix}]

説明

CI/CD Adapter をコンパイルして Manifest (Tekton Pipeline/Task) を生成します。

QVS Config を指定することで Adapter を利用して Manifest を生成します。 QVS Config の仕様については QVS Config を参照してください。

モジュールパスの指定

リモートにある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

通常 QVS Config に記述された リモートのモジュールを取得して利用しますが、-m オプションを利用することでローカルのモジュールを利用するように動作を変更できます。

// e.g. カレントディレクトリをモジュールディレクトリとして指定してコンパイル実行
qvsctl pipeline compile -c qvs.yaml -m .

出力先の指定

-o オプションを使用することでManifestの出力先としてディレクトリもしくはファイルを指定できます。指定した文字列に拡張子を含まない場合にはディレクトリとして扱い、指定されたディレクトリを作成して manifests.yml を出力します。指定した文字列に拡張子を含む場合にはファイル名を含むパスとして扱い、指定したファイルに出力します。

// e.g. ディレクトリのみ指定する場合
qvsctl pipeline compile -c qvs.yaml -m . -o pipeline1
ls pipeline1/

manifests.yml 

// e.g. ファイル名も指定する場合
qvsctl pipeline compile -c qvs.yaml -m . -o pipeline2/sample-manifests.yml
ls pipeline2/

sample-manifests.yml

プレフィックスの指定

Pipeline/Taskへのプレフィックスを指定する--prefixオプションは任意ではありますが、このオプションを使用して、対応するQmonus Value StreamのApplicationごとに、同一のProjectで使用するPipeline/Taskの名前を分けることを推奨します。

例えば、Simple Deploy Adapter はユーザの実行環境にアプリケーションをデプロイするためのCI/CD Adapterですが、必要なパラメータはQVSのApplication単位で異なるため、生成されるPipeline/Taskをプレフィックスで区別して、qvsctl pipeline applyコマンドで意図しない上書きが行われないようにすることが望ましいです。

// e.g. QVS Configで指定されたSimple Deploy Adapterから出力されるPipeline/Taskに`sample-app`プレフィックスを付与する
qvsctl pipeline compile -c qvs.yaml -m . --prefix sample-app
...
Successfully dumped manifests to output/manifests.yml

cat output/manifests.yml

Pipeline/Taskが以下のように出力されます。

yaml
kind: Pipeline
apiVersion: tekton.dev/v1beta1
metadata:
  name: sample-app-deploy ## deploy Pipelineに`sample-app`プレフィックスが付与される
  [...]
spec:
  tasks:
    - name: checkout
      taskRef:
        name: sample-app-git-checkout ## `sample-app`プレフィックスが付与されたgit-checkout Taskを指定している
      [...]
    [...]
  [...]
---
kind: Task
apiVersion: tekton.dev/v1beta1
metadata:
  name: sample-app-git-checkout ## git-checkout Taskに`sample-app`プレフィックスが付与される
  [...]
[...]

Info

基本的にはプレフィックスを付与してください。プレフィックスを付与せずにコンパイルするケースは、Pipeline/Taskを各Applicationで共通としたい場合が考えられます。

オプション

  -c, --qvsconfig string    QVS Config のファイルパス
  -m, --module-dir string   ローカルのモジュールを利用する場合には、モジュールのディレクトリを指定
  -o, --out string          生成した Application Manifest を出力するディレクトリまたはファイル (Default: output/)
      --prefix string       Tekton Pipeline/Task名の prefix となる文字列を指定