(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【Tekton/R言語】PipelineとTaskの関係をgrVizで可視化する

スポンサーリンク

やりたいこと

Pipeline内に記載されているTaskを抽出してGUI上に可視化する。
尚、可視化にはR言語のgrVizを利用。

環境情報
  • tektoncd:v0.14.2
  • R.version:4.1.0

やり方

以下のスクリプトを実行すると

#!/bin/bash
kubectl get pipeline -n xx | grep -v NAME | cut -d" " -f1 > test.log
do
x=`echo $line | sed -e "s/-/_/g" | sed -e "s/^/p_/g"`
kubectl get pipeline $line -n xx -o=json | jq .spec.tasks[].name | sed -e  "s/-/_/g" | sed -e "s/\"//g" | sed -e "s/^/$x -> /g"
done < ./test.log

パイプラインとタスクが以下のような標識で出力されるので

p_build_a -> git_clone
p_build_a -> docker_build
p_build_a -> deploy
p_build_b -> git_clone
p_build_b -> docker_build2
p_build_b -> deploy
p_build_c -> docker_build
p_build_c -> deploy

R言語のgrViz/digraphを利用することで

> grViz(" digraph { p_build_a -> git_clone
+ p_build_a -> docker_build
+ p_build_a -> deploy
+ p_build_b -> git_clone
+ p_build_b -> docker_build2
+ p_build_b -> deploy
+ p_build_c -> docker_build
+ p_build_c -> deploy graph[rankdir = LR] } ")

画像が生成される。

f:id:mtiit:20210726074113p:plain
関係性を可視化できる

以下、補足です。

補足

パイプライン名の先頭にp_を付与することでタスク名と混合することを防ぎ

x=`echo $line | sed -e "s/-/_/g" | sed -e "s/^/p_/g"`

DOT言語の記述によってPipeline→Taskと紐付けをつけることでどのTaskがどのPipelineから呼び出されているかを表現しています。