やりたいこと
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] } ")
画像が生成される。
以下、補足です。
補足
パイプライン名の先頭にp_
を付与することでタスク名と混合することを防ぎ
x=`echo $line | sed -e "s/-/_/g" | sed -e "s/^/p_/g"`
DOT言語の記述によってPipeline→Taskと紐付けをつけることでどのTaskがどのPipelineから呼び出されているかを表現しています。