Why does this thing exist? Because I'm tired of finding out about problems with my Pipeline after I run it.
It is written in go because that is the language used by the Tekton code base. It makes us not have to re-invent the wheel to perform certain checks.
It currently supports the following:
- Verify PipelineTasks pass all required parameters to Tasks.
- Verify PipelineTasks pass known parameters to Tasks.
- Verify PipelineTasks pass parameters of expected types to Tasks.
- Verify PipelineTasks use known Task results.
- Resolve remote/local Tasks via PaC resolver, Bundles resolver, and embedded Task definitions.
Future work:
- Resolve remote Tasks via git resolver.
- Verify workspace usage.
- Verify PipelineRun parameters match parameters from Pipeline definition.
- Verify results are used according to their defined types.
- Remove printf calls and use proper logging.
- Don't fail on first found error.