【Tekton】tekton-lintでTektonの静的解析をする

2022.05.17
2024.03.24
CI/CD
Tektontekton-lint

はじめに

Tektonのlinterであるtekton-lintについてざっくり紹介したいと思います。

tekton-lint

tekton-lintは、Tektonの静的解析ツールです。

GitHub - IBM/tekton-lint: Linter for Tekton definitions.

GitHub - IBM/tekton-lint: Linter for Tekton definitions.

Linter for Tekton definitions. Contribute to IBM/tekton-lint development by creating an account on GitHub.

下記のようにtekton-lintコマンドで静的解析可能です。

1tekton-lint [file path]

TaskやPipelinの未定義などのエラーから、使っていないパラメータの検知などのベストプラクティスの解析までしてくれます。

GitHub - IBM/tekton-lint: Linter for Tekton definitions.

GitHub - IBM/tekton-lint: Linter for Tekton definitions.

Linter for Tekton definitions. Contribute to IBM/tekton-lint development by creating an account on GitHub.

インストール

インストールにはnodeが必要です。

1npm install -g tekton-lint

設定

tekton-lintでは、コマンドを実行するディレクトリに.tektonlintrc.yamlを作成することで解析内容の設定が可能です。

それぞれのルールに関してerrorwarningoffが選択可能です。

下記がデフォルトの設定になります。

1---
2rules: # error | warning | off
3  no-duplicate-param: error
4  no-invalid-name: error
5  no-invalid-param-type: error
6  no-pipeline-missing-parameters: error
7  no-pipeline-missing-task: error
8  no-pipeline-task-cycle: error
9  no-extra-param: error
10  no-missing-workspace: error
11  no-undefined-result: error
12  no-missing-param: error
13  no-duplicate-resource: error
14  no-resourceversion: error
15  no-duplicate-env: error
16  no-undefined-volume: error
17  no-latest-image: warning
18  prefer-beta: warning
19  prefer-kebab-case: warning
20  no-unused-param: warning
21  no-missing-resource: error
22  no-undefined-param: error
23  prefer-when-expression: warning
24  no-deprecated-resource: warning
25  no-missing-hashbang: warning
tekton-lint/.tektonlintrc.yaml at main · IBM/tekton-lint

tekton-lint/.tektonlintrc.yaml at main · IBM/tekton-lint

Linter for Tekton definitions. Contribute to IBM/tekton-lint development by creating an account on GitHub.

使ってみる

シンプルなPipelineとTaskで試してみます。

作成するファイルは下記の3つです。

1.
2├── hello-pipeline.yml
3├── hello-pipelineRun.yml
4└── hello-task.yml

それぞれの内容は下記の通りです。

1apiVersion: tekton.dev/v1beta1
2kind: PipelineRun
3metadata:
4  generateName: hello-run-
5spec:
6  params:
7    - name: test-param
8      value: "foo"
9  pipelineRef:
10    name: hello-pipeline
1apiVersion: tekton.dev/v1beta1
2kind: Pipeline
3metadata:
4  name: hello-pipeline
5spec:
6  params:
7    - name: test-param
8      default: "hoge"
9  tasks:
10    - name: hello
11      taskRef:
12        name: hello-task
13    - name: goodbye
14      taskRef:
15        name: goodbye-task
1apiVersion: tekton.dev/v1beta1
2kind: Task
3metadata:
4  name: hello-task
5spec:
6  steps:
7    - name: hello
8      image: ubuntu
9      command:
10        - echo
11      args:
12        - "Hello World!"

tekton-lintを実行してみます。

--format=stylishというオプションをつけたほうが見やすいので、オプション付きで実行します。

1❯ tekton-lint * --format=stylish
2
3hello-task.yml
4  8:14  warning  Invalid image: 'ubuntu'. Specify the image tag instead of using ':latest'  no-latest-image
5
6hello-pipeline.yml
7  15:15  error    Pipeline 'hello-pipeline' references task 'goodbye-task' but the referenced task cannot be found. To fix this, include all the task definitions to the lint task for this pipeline  no-missing-resource
8   7:7   warning  Pipeline 'hello-pipeline' defines parameter 'test-param', but it's not used anywhere in the spec                                                                                    no-unused-param
9
103 problems (1 error, 2 warnings)

どのファイルの、どこで、何を、検知したかが出力されています。

検知された問題は下記の3つです。

  • イメージのタグが指定されていない
  • 定義されていないTaskを使っている
  • 未使用のパラメーターが存在する

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee