@backstage-community/plugin-tekton 3.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +801 -0
- package/README.md +369 -0
- package/app-config.dynamic.yaml +12 -0
- package/dist/components/Charts/PipelineBars.esm.js +49 -0
- package/dist/components/Charts/PipelineBars.esm.js.map +1 -0
- package/dist/components/Icons/CriticalRiskIcon.esm.js +22 -0
- package/dist/components/Icons/CriticalRiskIcon.esm.js.map +1 -0
- package/dist/components/Icons/EqualsIcon.esm.js +22 -0
- package/dist/components/Icons/EqualsIcon.esm.js.map +1 -0
- package/dist/components/Icons/LinkToSbomIcon.esm.js +37 -0
- package/dist/components/Icons/LinkToSbomIcon.esm.js.map +1 -0
- package/dist/components/Icons/OutputIcon.esm.js +36 -0
- package/dist/components/Icons/OutputIcon.esm.js.map +1 -0
- package/dist/components/Icons/SignedBadge.esm.js +16 -0
- package/dist/components/Icons/SignedBadge.esm.js.map +1 -0
- package/dist/components/Icons/ViewLogsIcon.esm.js +35 -0
- package/dist/components/Icons/ViewLogsIcon.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunColumnHeader.esm.js +43 -0
- package/dist/components/PipelineRunList/PipelineRunColumnHeader.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunList.esm.js +185 -0
- package/dist/components/PipelineRunList/PipelineRunList.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js +42 -0
- package/dist/components/PipelineRunList/PipelineRunListSearchBar.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunOutput.esm.js +70 -0
- package/dist/components/PipelineRunList/PipelineRunOutput.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunRow.css.esm.js +7 -0
- package/dist/components/PipelineRunList/PipelineRunRow.css.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunRow.esm.js +110 -0
- package/dist/components/PipelineRunList/PipelineRunRow.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js +137 -0
- package/dist/components/PipelineRunList/PipelineRunRowActions.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunSBOMLink.esm.js +25 -0
- package/dist/components/PipelineRunList/PipelineRunSBOMLink.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunTableBody.esm.js +32 -0
- package/dist/components/PipelineRunList/PipelineRunTableBody.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunTaskStatus.esm.js +11 -0
- package/dist/components/PipelineRunList/PipelineRunTaskStatus.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js +81 -0
- package/dist/components/PipelineRunList/PipelineRunVulnerabilities.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PipelineTableHeader.esm.js +53 -0
- package/dist/components/PipelineRunList/PipelineTableHeader.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PlrStatus.css.esm.js +7 -0
- package/dist/components/PipelineRunList/PlrStatus.css.esm.js.map +1 -0
- package/dist/components/PipelineRunList/PlrStatus.esm.js +11 -0
- package/dist/components/PipelineRunList/PlrStatus.esm.js.map +1 -0
- package/dist/components/PipelineRunList/ResourceBadge.css.esm.js +7 -0
- package/dist/components/PipelineRunList/ResourceBadge.css.esm.js.map +1 -0
- package/dist/components/PipelineRunList/ResourceBadge.esm.js +15 -0
- package/dist/components/PipelineRunList/ResourceBadge.esm.js.map +1 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js +82 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogDialog.esm.js.map +1 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogDownloader.esm.js +47 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogDownloader.esm.js.map +1 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js +53 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogViewer.esm.js.map +1 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js +69 -0
- package/dist/components/PipelineRunLogs/PipelineRunLogs.esm.js.map +1 -0
- package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js +69 -0
- package/dist/components/PipelineRunLogs/PodLogsDownloadLink.esm.js.map +1 -0
- package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js +128 -0
- package/dist/components/PipelineRunLogs/TaskStatusStepper.esm.js.map +1 -0
- package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js +62 -0
- package/dist/components/PipelineRunOutput/PipelineRunOutputDialog.esm.js.map +1 -0
- package/dist/components/Router.esm.js +16 -0
- package/dist/components/Router.esm.js.map +1 -0
- package/dist/components/Tekton/TektonCIComponent.esm.js +53 -0
- package/dist/components/Tekton/TektonCIComponent.esm.js.map +1 -0
- package/dist/components/common/ClusterSelector.css.esm.js +7 -0
- package/dist/components/common/ClusterSelector.css.esm.js.map +1 -0
- package/dist/components/common/ClusterSelector.esm.js +46 -0
- package/dist/components/common/ClusterSelector.esm.js.map +1 -0
- package/dist/components/common/ErrorPanel.esm.js +33 -0
- package/dist/components/common/ErrorPanel.esm.js.map +1 -0
- package/dist/components/common/PermissionAlert.esm.js +9 -0
- package/dist/components/common/PermissionAlert.esm.js.map +1 -0
- package/dist/components/common/ResourceStatus.css.esm.js +7 -0
- package/dist/components/common/ResourceStatus.css.esm.js.map +1 -0
- package/dist/components/common/StatusSelector.css.esm.js +7 -0
- package/dist/components/common/StatusSelector.css.esm.js.map +1 -0
- package/dist/components/common/StatusSelector.esm.js +48 -0
- package/dist/components/common/StatusSelector.esm.js.map +1 -0
- package/dist/components/common/TableExpandCollapse.esm.js +44 -0
- package/dist/components/common/TableExpandCollapse.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineLayout.esm.js +126 -0
- package/dist/components/pipeline-topology/PipelineLayout.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineRunVisualization.esm.js +13 -0
- package/dist/components/pipeline-topology/PipelineRunVisualization.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineTaskNode.css.esm.js +7 -0
- package/dist/components/pipeline-topology/PipelineTaskNode.css.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineTaskNode.esm.js +132 -0
- package/dist/components/pipeline-topology/PipelineTaskNode.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineVisualization.css.esm.js +7 -0
- package/dist/components/pipeline-topology/PipelineVisualization.css.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineVisualization.esm.js +24 -0
- package/dist/components/pipeline-topology/PipelineVisualization.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.css.esm.js +7 -0
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.css.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js +39 -0
- package/dist/components/pipeline-topology/PipelineVisualizationStepList.esm.js.map +1 -0
- package/dist/components/pipeline-topology/PipelineVisualizationView.esm.js +41 -0
- package/dist/components/pipeline-topology/PipelineVisualizationView.esm.js.map +1 -0
- package/dist/components/pipeline-topology/TaskGroupEdge.esm.js +16 -0
- package/dist/components/pipeline-topology/TaskGroupEdge.esm.js.map +1 -0
- package/dist/components/pipeline-topology/dag.esm.js +119 -0
- package/dist/components/pipeline-topology/dag.esm.js.map +1 -0
- package/dist/components/pipeline-topology/pipelineComponentFactory.esm.js +60 -0
- package/dist/components/pipeline-topology/pipelineComponentFactory.esm.js.map +1 -0
- package/dist/consts/pipeline-topology-const.esm.js +66 -0
- package/dist/consts/pipeline-topology-const.esm.js.map +1 -0
- package/dist/consts/tekton-const.esm.js +7 -0
- package/dist/consts/tekton-const.esm.js.map +1 -0
- package/dist/hooks/TektonResourcesContext.esm.js +16 -0
- package/dist/hooks/TektonResourcesContext.esm.js.map +1 -0
- package/dist/hooks/useAllWatchResources.esm.js +35 -0
- package/dist/hooks/useAllWatchResources.esm.js.map +1 -0
- package/dist/hooks/useDarkTheme.esm.js +21 -0
- package/dist/hooks/useDarkTheme.esm.js.map +1 -0
- package/dist/hooks/usePipelineRunScanResults.esm.js +35 -0
- package/dist/hooks/usePipelineRunScanResults.esm.js.map +1 -0
- package/dist/hooks/usePodLogsOfPipelineRun.esm.js +67 -0
- package/dist/hooks/usePodLogsOfPipelineRun.esm.js.map +1 -0
- package/dist/hooks/useResourcesClusters.esm.js +24 -0
- package/dist/hooks/useResourcesClusters.esm.js.map +1 -0
- package/dist/hooks/useTektonObjectsResponse.esm.js +78 -0
- package/dist/hooks/useTektonObjectsResponse.esm.js.map +1 -0
- package/dist/hooks/useTektonViewPermission.esm.js +12 -0
- package/dist/hooks/useTektonViewPermission.esm.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.esm.js +3 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/models.esm.js +21 -0
- package/dist/models.esm.js.map +1 -0
- package/dist/plugin.esm.js +72 -0
- package/dist/plugin.esm.js.map +1 -0
- package/dist/types/types.esm.js +15 -0
- package/dist/types/types.esm.js.map +1 -0
- package/dist/utils/isTektonCIAvailable.esm.js +7 -0
- package/dist/utils/isTektonCIAvailable.esm.js.map +1 -0
- package/dist/utils/log-downloader-utils.esm.js +33 -0
- package/dist/utils/log-downloader-utils.esm.js.map +1 -0
- package/dist/utils/pipeline-step-utils.esm.js +53 -0
- package/dist/utils/pipeline-step-utils.esm.js.map +1 -0
- package/dist/utils/pipeline-topology-utils.esm.js +250 -0
- package/dist/utils/pipeline-topology-utils.esm.js.map +1 -0
- package/dist/utils/pipelineRun-utils.esm.js +128 -0
- package/dist/utils/pipelineRun-utils.esm.js.map +1 -0
- package/dist/utils/taskRun-utils.esm.js +50 -0
- package/dist/utils/taskRun-utils.esm.js.map +1 -0
- package/dist/utils/tekton-utils.esm.js +191 -0
- package/dist/utils/tekton-utils.esm.js.map +1 -0
- package/package.json +114 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { pluralize } from '@patternfly/react-core';
|
|
2
|
+
import { get } from 'lodash';
|
|
3
|
+
import { pipelineRunStatus, getTaskRunsForPipelineRun, updateTaskStatus, ComputedStatus, pipelineRunFilterReducer, SucceedConditionReason } from '@janus-idp/shared-react';
|
|
4
|
+
import { getPipelineRunScanResults } from '../hooks/usePipelineRunScanResults.esm.js';
|
|
5
|
+
import { PipelineRunGVK, TaskRunGVK } from '../models.esm.js';
|
|
6
|
+
|
|
7
|
+
const getClusters = (k8sObjects) => {
|
|
8
|
+
const clusters = k8sObjects.items.map(
|
|
9
|
+
(item) => item.cluster.name
|
|
10
|
+
);
|
|
11
|
+
const errors = k8sObjects.items.map(
|
|
12
|
+
(item) => item.errors
|
|
13
|
+
);
|
|
14
|
+
return { clusters, errors };
|
|
15
|
+
};
|
|
16
|
+
const isTektonResource = (kind) => [PipelineRunGVK.kind, TaskRunGVK.kind].includes(kind);
|
|
17
|
+
const getResourceType = (kind) => {
|
|
18
|
+
switch (kind) {
|
|
19
|
+
case PipelineRunGVK.kind:
|
|
20
|
+
return "pipelineruns";
|
|
21
|
+
case TaskRunGVK.kind:
|
|
22
|
+
return "taskruns";
|
|
23
|
+
default:
|
|
24
|
+
return "";
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
const getTektonResources = (cluster, k8sObjects) => k8sObjects.items?.[cluster]?.resources?.reduce(
|
|
28
|
+
(acc, res) => {
|
|
29
|
+
if (res.type === "pods") {
|
|
30
|
+
return {
|
|
31
|
+
...acc,
|
|
32
|
+
pods: { data: res.resources }
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (res.type !== "customresources" || res.type === "customresources" && res.resources.length === 0) {
|
|
36
|
+
return acc;
|
|
37
|
+
}
|
|
38
|
+
const customResKind = res.resources[0].kind;
|
|
39
|
+
return {
|
|
40
|
+
...acc,
|
|
41
|
+
...isTektonResource(customResKind) && {
|
|
42
|
+
[getResourceType(customResKind)]: {
|
|
43
|
+
data: res.resources
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
},
|
|
48
|
+
{}
|
|
49
|
+
);
|
|
50
|
+
const totalPipelineRunTasks = (pipelinerun) => {
|
|
51
|
+
if (!pipelinerun?.status?.pipelineSpec) {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
const totalTasks = (pipelinerun.status.pipelineSpec?.tasks || []).length;
|
|
55
|
+
const finallyTasks = (pipelinerun.status.pipelineSpec?.finally || []).length ?? 0;
|
|
56
|
+
return totalTasks + finallyTasks;
|
|
57
|
+
};
|
|
58
|
+
const getTaskStatusOfPLR = (pipelinerun, taskRuns) => {
|
|
59
|
+
const totalTasks = totalPipelineRunTasks(pipelinerun);
|
|
60
|
+
const plrTasks = getTaskRunsForPipelineRun(pipelinerun, taskRuns);
|
|
61
|
+
const plrTaskLength = plrTasks?.length;
|
|
62
|
+
const skippedTaskLength = pipelinerun?.status?.skippedTasks?.length || 0;
|
|
63
|
+
const taskStatus = updateTaskStatus(pipelinerun, plrTasks);
|
|
64
|
+
if (plrTasks?.length > 0) {
|
|
65
|
+
const pipelineRunHasFailure = taskStatus[ComputedStatus.Failed] > 0;
|
|
66
|
+
const pipelineRunIsCancelled = pipelineRunFilterReducer(pipelinerun) === ComputedStatus.Cancelled;
|
|
67
|
+
const unhandledTasks = totalTasks >= plrTaskLength ? totalTasks - plrTaskLength - skippedTaskLength : totalTasks;
|
|
68
|
+
if (pipelineRunHasFailure || pipelineRunIsCancelled) {
|
|
69
|
+
taskStatus[ComputedStatus.Cancelled] += unhandledTasks;
|
|
70
|
+
} else {
|
|
71
|
+
taskStatus[ComputedStatus.Pending] += unhandledTasks;
|
|
72
|
+
}
|
|
73
|
+
} else if (pipelinerun?.status?.conditions?.[0]?.status === "False" || pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunCancelled) {
|
|
74
|
+
taskStatus[ComputedStatus.Cancelled] = totalTasks;
|
|
75
|
+
} else if (pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunPending) {
|
|
76
|
+
taskStatus[ComputedStatus.Pending] += totalTasks;
|
|
77
|
+
} else {
|
|
78
|
+
taskStatus[ComputedStatus.PipelineNotStarted]++;
|
|
79
|
+
}
|
|
80
|
+
return taskStatus;
|
|
81
|
+
};
|
|
82
|
+
const getDuration = (seconds, long) => {
|
|
83
|
+
if (seconds === 0) {
|
|
84
|
+
return "less than a sec";
|
|
85
|
+
}
|
|
86
|
+
let sec = Math.round(seconds);
|
|
87
|
+
let min = 0;
|
|
88
|
+
let hr = 0;
|
|
89
|
+
let duration = "";
|
|
90
|
+
if (sec >= 60) {
|
|
91
|
+
min = Math.floor(sec / 60);
|
|
92
|
+
sec %= 60;
|
|
93
|
+
}
|
|
94
|
+
if (min >= 60) {
|
|
95
|
+
hr = Math.floor(min / 60);
|
|
96
|
+
min %= 60;
|
|
97
|
+
}
|
|
98
|
+
if (hr > 0) {
|
|
99
|
+
duration += long ? pluralize(hr, "hour", "hours") : `${hr}h`;
|
|
100
|
+
duration += " ";
|
|
101
|
+
}
|
|
102
|
+
if (min > 0) {
|
|
103
|
+
duration += long ? pluralize(min, "minute", "minutes") : `${min}m`;
|
|
104
|
+
duration += " ";
|
|
105
|
+
}
|
|
106
|
+
if (sec > 0) {
|
|
107
|
+
duration += long ? pluralize(sec, "second", "seconds") : `${sec}s`;
|
|
108
|
+
}
|
|
109
|
+
return duration.trim();
|
|
110
|
+
};
|
|
111
|
+
const descendingComparator = (a, b, orderBy) => {
|
|
112
|
+
if (get(b, orderBy) < get(a, orderBy)) {
|
|
113
|
+
return -1;
|
|
114
|
+
}
|
|
115
|
+
if (get(b, orderBy) > get(a, orderBy)) {
|
|
116
|
+
return 1;
|
|
117
|
+
}
|
|
118
|
+
return 0;
|
|
119
|
+
};
|
|
120
|
+
const calculateDurationInSeconds = (startTime, endTime) => {
|
|
121
|
+
const start = new Date(startTime).getTime();
|
|
122
|
+
const end = endTime ? new Date(endTime).getTime() : (/* @__PURE__ */ new Date()).getTime();
|
|
123
|
+
const durationInSeconds = (end - start) / 1e3;
|
|
124
|
+
return durationInSeconds;
|
|
125
|
+
};
|
|
126
|
+
const durationComparator = (a, b) => {
|
|
127
|
+
const durationA = a.status?.startTime ? calculateDurationInSeconds(a.status?.startTime, a.status?.completionTime) : 0;
|
|
128
|
+
const durationB = b.status?.startTime ? calculateDurationInSeconds(b.status?.startTime, b.status?.completionTime) : 0;
|
|
129
|
+
if (durationB < durationA) {
|
|
130
|
+
return -1;
|
|
131
|
+
}
|
|
132
|
+
if (durationB > durationA) {
|
|
133
|
+
return 1;
|
|
134
|
+
}
|
|
135
|
+
return 0;
|
|
136
|
+
};
|
|
137
|
+
const vulnerabilitiesSortValue = (scanResults) => {
|
|
138
|
+
if (!scanResults?.vulnerabilities) {
|
|
139
|
+
return -1;
|
|
140
|
+
}
|
|
141
|
+
return (scanResults.vulnerabilities.critical ?? 0) * 1e9 + (scanResults.vulnerabilities.high ?? 0) * 1e6 + (scanResults.vulnerabilities.medium ?? 0) * 1e3 + (scanResults.vulnerabilities.low ?? 0);
|
|
142
|
+
};
|
|
143
|
+
const vulnerabilitiesComparator = (a, b) => {
|
|
144
|
+
const vulnerabilitiesSortValueA = vulnerabilitiesSortValue(
|
|
145
|
+
getPipelineRunScanResults(a)
|
|
146
|
+
);
|
|
147
|
+
const vulnerabilitiesSortValueB = vulnerabilitiesSortValue(
|
|
148
|
+
getPipelineRunScanResults(b)
|
|
149
|
+
);
|
|
150
|
+
if (vulnerabilitiesSortValueB < vulnerabilitiesSortValueA) {
|
|
151
|
+
return -1;
|
|
152
|
+
}
|
|
153
|
+
if (vulnerabilitiesSortValueB > vulnerabilitiesSortValueA) {
|
|
154
|
+
return 1;
|
|
155
|
+
}
|
|
156
|
+
return 0;
|
|
157
|
+
};
|
|
158
|
+
const getComparator = (order, orderBy, orderById) => {
|
|
159
|
+
switch (orderById) {
|
|
160
|
+
case "duration":
|
|
161
|
+
return (a, b) => {
|
|
162
|
+
return order === "desc" ? durationComparator(a, b) : -durationComparator(a, b);
|
|
163
|
+
};
|
|
164
|
+
case "vulnerabilities":
|
|
165
|
+
return (a, b) => {
|
|
166
|
+
return order === "desc" ? vulnerabilitiesComparator(a, b) : -vulnerabilitiesComparator(a, b);
|
|
167
|
+
};
|
|
168
|
+
default:
|
|
169
|
+
return (a, b) => {
|
|
170
|
+
return order === "desc" ? descendingComparator(a, b, orderBy) : -descendingComparator(a, b, orderBy);
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
const calculateDuration = (startTime, endTime, long) => {
|
|
175
|
+
const durationInSeconds = calculateDurationInSeconds(startTime, endTime);
|
|
176
|
+
return getDuration(durationInSeconds, long);
|
|
177
|
+
};
|
|
178
|
+
const pipelineRunDuration = (run) => {
|
|
179
|
+
if (!run || Object.keys(run).length === 0) {
|
|
180
|
+
return "-";
|
|
181
|
+
}
|
|
182
|
+
const startTime = run.status?.startTime;
|
|
183
|
+
const completionTime = run.status?.completionTime;
|
|
184
|
+
if (!startTime || !completionTime && pipelineRunStatus(run) !== "Running") {
|
|
185
|
+
return "-";
|
|
186
|
+
}
|
|
187
|
+
return calculateDuration(startTime, completionTime, true);
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
export { calculateDuration, calculateDurationInSeconds, descendingComparator, durationComparator, getClusters, getComparator, getDuration, getTaskStatusOfPLR, getTektonResources, pipelineRunDuration, totalPipelineRunTasks, vulnerabilitiesComparator };
|
|
191
|
+
//# sourceMappingURL=tekton-utils.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tekton-utils.esm.js","sources":["../../src/utils/tekton-utils.ts"],"sourcesContent":["/*\n * Copyright 2024 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n ClusterObjects,\n ObjectsByEntityResponse,\n} from '@backstage/plugin-kubernetes-common';\n\nimport { pluralize } from '@patternfly/react-core';\nimport { get } from 'lodash';\n\nimport {\n ComputedStatus,\n getTaskRunsForPipelineRun,\n pipelineRunFilterReducer,\n PipelineRunKind,\n pipelineRunStatus,\n SucceedConditionReason,\n TaskRunKind,\n TaskStatusTypes,\n updateTaskStatus,\n} from '@janus-idp/shared-react';\n\nimport { getPipelineRunScanResults } from '../hooks/usePipelineRunScanResults';\nimport { PipelineRunGVK, TaskRunGVK } from '../models';\nimport {\n ClusterErrors,\n Order,\n PipelineRunScanResults,\n TektonResponseData,\n} from '../types/types';\n\nexport const getClusters = (k8sObjects: ObjectsByEntityResponse) => {\n const clusters: string[] = k8sObjects.items.map(\n (item: ClusterObjects) => item.cluster.name,\n );\n const errors: ClusterErrors[] = k8sObjects.items.map(\n (item: ClusterObjects) => item.errors,\n );\n return { clusters, errors };\n};\n\nconst isTektonResource = (kind: string) =>\n [PipelineRunGVK.kind, TaskRunGVK.kind].includes(kind);\n\nconst getResourceType = (kind: string) => {\n switch (kind) {\n case PipelineRunGVK.kind:\n return 'pipelineruns';\n case TaskRunGVK.kind:\n return 'taskruns';\n default:\n return '';\n }\n};\n\nexport const getTektonResources = (\n cluster: number,\n k8sObjects: ObjectsByEntityResponse,\n) =>\n k8sObjects.items?.[cluster]?.resources?.reduce(\n (acc: TektonResponseData, res: any) => {\n if (res.type === 'pods') {\n return {\n ...acc,\n pods: { data: res.resources },\n };\n }\n if (\n res.type !== 'customresources' ||\n (res.type === 'customresources' && res.resources.length === 0)\n ) {\n return acc;\n }\n const customResKind = res.resources[0].kind;\n return {\n ...acc,\n ...(isTektonResource(customResKind) && {\n [getResourceType(customResKind)]: {\n data: res.resources,\n },\n }),\n };\n },\n {},\n );\n\nexport const totalPipelineRunTasks = (pipelinerun: PipelineRunKind): number => {\n if (!pipelinerun?.status?.pipelineSpec) {\n return 0;\n }\n const totalTasks = (pipelinerun.status.pipelineSpec?.tasks || []).length;\n const finallyTasks =\n (pipelinerun.status.pipelineSpec?.finally || []).length ?? 0;\n return totalTasks + finallyTasks;\n};\n\nexport const getTaskStatusOfPLR = (\n pipelinerun: PipelineRunKind,\n taskRuns: TaskRunKind[],\n) => {\n const totalTasks = totalPipelineRunTasks(pipelinerun);\n const plrTasks = getTaskRunsForPipelineRun(pipelinerun, taskRuns);\n const plrTaskLength = plrTasks?.length;\n const skippedTaskLength = pipelinerun?.status?.skippedTasks?.length || 0;\n\n const taskStatus: TaskStatusTypes = updateTaskStatus(pipelinerun, plrTasks);\n\n if (plrTasks?.length > 0) {\n const pipelineRunHasFailure = taskStatus[ComputedStatus.Failed] > 0;\n const pipelineRunIsCancelled =\n pipelineRunFilterReducer(pipelinerun) === ComputedStatus.Cancelled;\n const unhandledTasks =\n totalTasks >= plrTaskLength\n ? totalTasks - plrTaskLength - skippedTaskLength\n : totalTasks;\n\n if (pipelineRunHasFailure || pipelineRunIsCancelled) {\n taskStatus[ComputedStatus.Cancelled] += unhandledTasks;\n } else {\n taskStatus[ComputedStatus.Pending] += unhandledTasks;\n }\n } else if (\n pipelinerun?.status?.conditions?.[0]?.status === 'False' ||\n pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunCancelled\n ) {\n taskStatus[ComputedStatus.Cancelled] = totalTasks;\n } else if (\n pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunPending\n ) {\n taskStatus[ComputedStatus.Pending] += totalTasks;\n } else {\n taskStatus[ComputedStatus.PipelineNotStarted]++;\n }\n return taskStatus;\n};\n\nexport const getDuration = (seconds: number, long?: boolean): string => {\n if (seconds === 0) {\n return 'less than a sec';\n }\n let sec = Math.round(seconds);\n let min = 0;\n let hr = 0;\n let duration = '';\n if (sec >= 60) {\n min = Math.floor(sec / 60);\n sec %= 60;\n }\n if (min >= 60) {\n hr = Math.floor(min / 60);\n min %= 60;\n }\n if (hr > 0) {\n duration += long ? pluralize(hr, 'hour', 'hours') : `${hr}h`;\n duration += ' ';\n }\n if (min > 0) {\n duration += long ? pluralize(min, 'minute', 'minutes') : `${min}m`;\n duration += ' ';\n }\n if (sec > 0) {\n duration += long ? pluralize(sec, 'second', 'seconds') : `${sec}s`;\n }\n\n return duration.trim();\n};\n\nexport const descendingComparator = (\n a: PipelineRunKind,\n b: PipelineRunKind,\n orderBy: string,\n) => {\n if (get(b, orderBy) < get(a, orderBy)) {\n return -1;\n }\n if (get(b, orderBy) > get(a, orderBy)) {\n return 1;\n }\n return 0;\n};\n\nexport const calculateDurationInSeconds = (\n startTime: string,\n endTime?: string,\n) => {\n const start = new Date(startTime).getTime();\n const end = endTime ? new Date(endTime).getTime() : new Date().getTime();\n const durationInSeconds = (end - start) / 1000;\n return durationInSeconds;\n};\n\nexport const durationComparator = (a: PipelineRunKind, b: PipelineRunKind) => {\n const durationA = a.status?.startTime\n ? calculateDurationInSeconds(a.status?.startTime, a.status?.completionTime)\n : 0;\n\n const durationB = b.status?.startTime\n ? calculateDurationInSeconds(b.status?.startTime, b.status?.completionTime)\n : 0;\n\n if (durationB < durationA) {\n return -1;\n }\n if (durationB > durationA) {\n return 1;\n }\n return 0;\n};\n\nconst vulnerabilitiesSortValue = (\n scanResults: PipelineRunScanResults,\n): number => {\n if (!scanResults?.vulnerabilities) {\n return -1;\n }\n // Expect no more than 999 of any one severity\n return (\n (scanResults.vulnerabilities.critical ?? 0) * 1000000000 +\n (scanResults.vulnerabilities.high ?? 0) * 1000000 +\n (scanResults.vulnerabilities.medium ?? 0) * 1000 +\n (scanResults.vulnerabilities.low ?? 0)\n );\n};\n\nexport const vulnerabilitiesComparator = (\n a: PipelineRunKind,\n b: PipelineRunKind,\n) => {\n const vulnerabilitiesSortValueA = vulnerabilitiesSortValue(\n getPipelineRunScanResults(a),\n );\n const vulnerabilitiesSortValueB = vulnerabilitiesSortValue(\n getPipelineRunScanResults(b),\n );\n\n if (vulnerabilitiesSortValueB < vulnerabilitiesSortValueA) {\n return -1;\n }\n if (vulnerabilitiesSortValueB > vulnerabilitiesSortValueA) {\n return 1;\n }\n return 0;\n};\n\nexport const getComparator = (\n order: Order,\n orderBy: string,\n orderById: string,\n) => {\n switch (orderById) {\n case 'duration':\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? durationComparator(a, b)\n : -durationComparator(a, b);\n };\n case 'vulnerabilities':\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? vulnerabilitiesComparator(a, b)\n : -vulnerabilitiesComparator(a, b);\n };\n default:\n return (a: PipelineRunKind, b: PipelineRunKind) => {\n return order === 'desc'\n ? descendingComparator(a, b, orderBy)\n : -descendingComparator(a, b, orderBy);\n };\n }\n};\n\nexport const calculateDuration = (\n startTime: string,\n endTime?: string,\n long?: boolean,\n) => {\n const durationInSeconds = calculateDurationInSeconds(startTime, endTime);\n return getDuration(durationInSeconds, long);\n};\n\nexport const pipelineRunDuration = (run: PipelineRunKind): string => {\n if (!run || Object.keys(run).length === 0) {\n return '-';\n }\n const startTime = run.status?.startTime;\n const completionTime = run.status?.completionTime;\n\n // Duration cannot be computed if start time is missing or a completed/failed pipeline/task has no end time\n if (!startTime || (!completionTime && pipelineRunStatus(run) !== 'Running')) {\n return '-';\n }\n return calculateDuration(startTime, completionTime, true);\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@backstage-community/plugin-tekton",
|
|
3
|
+
"version": "3.16.0",
|
|
4
|
+
"main": "dist/index.esm.js",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public",
|
|
9
|
+
"main": "dist/index.esm.js",
|
|
10
|
+
"types": "dist/index.d.ts"
|
|
11
|
+
},
|
|
12
|
+
"backstage": {
|
|
13
|
+
"role": "frontend-plugin",
|
|
14
|
+
"supported-versions": "^1.32.0",
|
|
15
|
+
"pluginId": "tekton",
|
|
16
|
+
"pluginPackage": "@backstage-community/plugin-tekton",
|
|
17
|
+
"pluginPackages": [
|
|
18
|
+
"@backstage-community/plugin-tekton",
|
|
19
|
+
"@backstage-community/plugin-tekton-common"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"sideEffects": [
|
|
23
|
+
"./**/*.css",
|
|
24
|
+
"./**/*.css.esm.js"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"start": "backstage-cli package start",
|
|
28
|
+
"build": "backstage-cli package build",
|
|
29
|
+
"lint": "backstage-cli package lint",
|
|
30
|
+
"test": "backstage-cli package test",
|
|
31
|
+
"clean": "backstage-cli package clean",
|
|
32
|
+
"prepack": "backstage-cli package prepack",
|
|
33
|
+
"postpack": "backstage-cli package postpack"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"@aonic-ui/pipelines": "^1.1.1",
|
|
37
|
+
"@backstage-community/plugin-tekton-common": "^1.4.0",
|
|
38
|
+
"@backstage/catalog-model": "^1.7.0",
|
|
39
|
+
"@backstage/core-components": "^0.15.1",
|
|
40
|
+
"@backstage/core-plugin-api": "^1.10.0",
|
|
41
|
+
"@backstage/plugin-catalog-react": "^1.14.0",
|
|
42
|
+
"@backstage/plugin-kubernetes": "^0.11.16",
|
|
43
|
+
"@backstage/plugin-kubernetes-common": "^0.8.3",
|
|
44
|
+
"@backstage/plugin-kubernetes-react": "^0.4.4",
|
|
45
|
+
"@backstage/plugin-permission-react": "^0.4.27",
|
|
46
|
+
"@backstage/theme": "^0.6.0",
|
|
47
|
+
"@janus-idp/shared-react": "^2.13.1",
|
|
48
|
+
"@kubernetes/client-node": "^0.22.1",
|
|
49
|
+
"@material-ui/core": "^4.9.13",
|
|
50
|
+
"@material-ui/icons": "^4.11.3",
|
|
51
|
+
"@material-ui/lab": "^4.0.0-alpha.45",
|
|
52
|
+
"@mui/icons-material": "5.15.17",
|
|
53
|
+
"@patternfly/patternfly": "^5.1.0",
|
|
54
|
+
"@patternfly/react-charts": "^7.1.1",
|
|
55
|
+
"@patternfly/react-core": "^5.1.2",
|
|
56
|
+
"@patternfly/react-tokens": "^5.1.2",
|
|
57
|
+
"@patternfly/react-topology": "^5.1.0",
|
|
58
|
+
"classnames": "^2.3.2",
|
|
59
|
+
"dagre": "^0.8.5",
|
|
60
|
+
"lodash": "^4.17.21",
|
|
61
|
+
"react-measure": "^2.5.2",
|
|
62
|
+
"react-use": "^17.4.0"
|
|
63
|
+
},
|
|
64
|
+
"peerDependencies": {
|
|
65
|
+
"react": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
66
|
+
"react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0",
|
|
67
|
+
"react-router-dom": "^6.0.0"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@backstage/cli": "0.28.2",
|
|
71
|
+
"@backstage/core-app-api": "1.15.1",
|
|
72
|
+
"@backstage/dev-utils": "1.1.2",
|
|
73
|
+
"@backstage/test-utils": "1.7.0",
|
|
74
|
+
"@playwright/test": "1.45.3",
|
|
75
|
+
"@redhat-developer/red-hat-developer-hub-theme": "0.4.0",
|
|
76
|
+
"@testing-library/jest-dom": "6.4.8",
|
|
77
|
+
"@testing-library/react": "14.3.1",
|
|
78
|
+
"@testing-library/react-hooks": "8.0.1",
|
|
79
|
+
"@testing-library/user-event": "14.5.2",
|
|
80
|
+
"@types/dagre": "^0.7.52",
|
|
81
|
+
"@types/lodash": "4.17.5",
|
|
82
|
+
"@types/node": "18.19.34",
|
|
83
|
+
"cross-fetch": "4.0.0",
|
|
84
|
+
"msw": "1.3.3",
|
|
85
|
+
"prettier": "3.3.3",
|
|
86
|
+
"start-server-and-test": "2.0.8"
|
|
87
|
+
},
|
|
88
|
+
"files": [
|
|
89
|
+
"app-config.dynamic.yaml",
|
|
90
|
+
"dist"
|
|
91
|
+
],
|
|
92
|
+
"repository": {
|
|
93
|
+
"type": "git",
|
|
94
|
+
"url": "git+https://github.com/backstage/community-plugins.git",
|
|
95
|
+
"directory": "workspaces/tekton/plugins/tekton"
|
|
96
|
+
},
|
|
97
|
+
"keywords": [
|
|
98
|
+
"support:production",
|
|
99
|
+
"lifecycle:active",
|
|
100
|
+
"kubernetes",
|
|
101
|
+
"tekton",
|
|
102
|
+
"backstage",
|
|
103
|
+
"plugin"
|
|
104
|
+
],
|
|
105
|
+
"homepage": "https://red.ht/rhdh",
|
|
106
|
+
"bugs": "https://github.com/backstage/community-plugins/issues",
|
|
107
|
+
"maintainers": [
|
|
108
|
+
"christoph-jerolimov",
|
|
109
|
+
"@debsmita1",
|
|
110
|
+
"@divyanshiGupta"
|
|
111
|
+
],
|
|
112
|
+
"author": "Red Hat",
|
|
113
|
+
"module": "./dist/index.esm.js"
|
|
114
|
+
}
|