Skip to content

Commit

Permalink
feat: support ClusterTasks
Browse files Browse the repository at this point in the history
Signed-off-by: MBWhite <whitemat@uk.ibm.com>
  • Loading branch information
mbwhite committed May 24, 2024
1 parent 8f1e62e commit d62c6d3
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 11 deletions.
4 changes: 3 additions & 1 deletion src/rules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ const createReporter = (rule, config, reporter) => {
const parse = (docs): Tekton => {
const tkn: Tekton = {
tasks: Object.fromEntries(
docs.filter((item) => item.kind === 'Task').map((item) => [item.metadata.name, item]),
docs
.filter((item) => item.kind === 'Task' || item.kind === 'ClusterTask')
.map((item) => [item.metadata.name, item]),
),
pipelines: Object.fromEntries(
docs.filter((item) => item.kind === 'Pipeline').map((item) => [item.metadata.name, item]),
Expand Down
37 changes: 27 additions & 10 deletions src/rules/no-missing-resource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,11 +71,20 @@ export default (docs, tekton, report) => {
const name = task.taskRef.name;

if (!tekton.tasks[name]) {
report(
`Pipeline '${pipeline.metadata.name}' references task '${name}' but the referenced task cannot be found. To fix this, include all the task definitions to the lint task for this pipeline.`,
task.taskRef,
'name',
);
if (task.taskRef.kind && task.taskRef.kind === 'ClusterTask') {
report(
`Pipeline '${pipeline.metadata.name}' references cluster task '${name}' but the referenced task cannot be found locally.`,
task.taskRef,
'name',
);
} else {
report(
`Pipeline '${pipeline.metadata.name}' references task '${name}' but the referenced task cannot be found. To fix this, include all the task definitions to the lint task for this pipeline.`,
task.taskRef,
'name',
);
}

continue;
}
}
Expand All @@ -94,11 +103,19 @@ export default (docs, tekton, report) => {
const name = task.taskRef.name;

if (!tekton.tasks[name]) {
report(
`Pipeline '${pipeline.metadata.name}' references task '${name}' but the referenced task cannot be found. To fix this, include all the task definitions to the lint task for this pipeline.`,
task.taskRef,
'name',
);
if (task.taskRef.kind && task.taskRef.kind === 'ClusterTask') {
report(
`Pipeline '${pipeline.metadata.name}' references cluster task '${name}' but the referenced task cannot be found locally.`,
task.taskRef,
'name',
);
} else {
report(
`Pipeline '${pipeline.metadata.name}' references task '${name}' but the referenced task cannot be found. To fix this, include all the task definitions to the lint task for this pipeline.`,
task.taskRef,
'name',
);
}
continue;
}
}
Expand Down
19 changes: 19 additions & 0 deletions system-tests/field/clustertasks/cluster-task.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: tekton.dev/v1beta1
kind: ClusterTask
metadata:
name: generate-random-number
spec:
description: Generates a random number.
inputs:
parameters:
- name: min
type: string
- name: max
type: string
steps:
- name: generate-random-number
image: busybox
command: ["/bin/echo", "$((RANDOM % $(params.max - params.min) + params.min))"]
outputs:
result:
type: string
13 changes: 13 additions & 0 deletions system-tests/field/clustertasks/pipeline.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: generate-random-number-pipeline
spec:
tasks:
- name: generate-random-number
taskRef:
name: generate-random-number
kind: ClusterTask
results:
- name: random-number
value: $(tasks.generate-random-number.outputs.result)

0 comments on commit d62c6d3

Please sign in to comment.