Skip to content

Commit d1f73c2

Browse files
authored
Merge pull request #827 from Altinity/customizations/24.8.14
24.8.14 Pre-release PR
2 parents 0563cd9 + 2558dfa commit d1f73c2

File tree

69 files changed

+2405
-476
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+2405
-476
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
name: Create and Upload Combined Report
2+
description: Create and upload a combined CI report
3+
inputs:
4+
final:
5+
description: "Control whether the report is final or a preview"
6+
required: false
7+
default: "false"
8+
runs:
9+
using: "composite"
10+
steps:
11+
- name: Create and upload workflow report
12+
env:
13+
PR_NUMBER: ${{ github.event.pull_request.number || 0 }}
14+
COMMIT_SHA: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
15+
ACTIONS_RUN_URL: ${{ github.event.repository.html_url }}/actions/runs/${{ github.run_id }}
16+
FINAL: ${{ inputs.final }}
17+
shell: bash
18+
run: |
19+
pip install clickhouse-driver==0.2.8 numpy==1.26.4 pandas==2.0.3 jinja2==3.1.5
20+
21+
CMD="python3 .github/actions/create_workflow_report/create_workflow_report.py"
22+
ARGS="--pr-number $PR_NUMBER --commit-sha $COMMIT_SHA --actions-run-url $ACTIONS_RUN_URL --known-fails tests/broken_tests.json --cves"
23+
24+
set +e
25+
if [[ "$FINAL" == "false" ]]; then
26+
REPORT_LINK=$($CMD $ARGS --mark-preview)
27+
else
28+
REPORT_LINK=$($CMD $ARGS)
29+
fi
30+
31+
echo $REPORT_LINK
32+
33+
if [[ "$FINAL" == "true" ]]; then
34+
IS_VALID_URL=$(echo $REPORT_LINK | grep -E '^https?://')
35+
if [[ -n $IS_VALID_URL ]]; then
36+
echo "Workflow Run Report: [View Report]($REPORT_LINK)" >> $GITHUB_STEP_SUMMARY
37+
else
38+
echo "Error: $REPORT_LINK" >> $GITHUB_STEP_SUMMARY
39+
exit 1
40+
fi
41+
fi
Lines changed: 269 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,269 @@
1+
<!DOCTYPE html>
2+
<html lang="en" data-lt-installed="true">
3+
4+
<head>
5+
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
6+
<meta charset="UTF-8">
7+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
8+
<style>
9+
/* Base colors for Altinity */
10+
:root {
11+
--altinity-background: #000D45;
12+
--altinity-accent: #189DCF;
13+
--altinity-highlight: #FFC600;
14+
--altinity-gray: #6c757d;
15+
--altinity-light-gray: #f8f9fa;
16+
--altinity-white: #ffffff;
17+
}
18+
19+
/* Body and heading fonts */
20+
body {
21+
font-family: Arimo, "Proxima Nova", "Helvetica Neue", Helvetica, Arial, sans-serif;
22+
font-size: 1rem;
23+
background-color: var(--altinity-background);
24+
color: var(--altinity-light-gray);
25+
padding: 2rem;
26+
}
27+
28+
h1,
29+
h2,
30+
h3,
31+
h4,
32+
h5,
33+
h6 {
34+
font-family: Figtree, "Proxima Nova", "Helvetica Neue", Helvetica, Arial, sans-serif;
35+
color: var(--altinity-white);
36+
}
37+
38+
.logo {
39+
width: auto;
40+
height: 5em;
41+
}
42+
43+
/* General table styling */
44+
table {
45+
min-width: min(900px, 98vw);
46+
margin: 1rem 0;
47+
border-collapse: collapse;
48+
background-color: var(--altinity-white);
49+
border: 1px solid var(--altinity-accent);
50+
box-shadow: 0 0 8px rgba(0, 0, 0, 0.05);
51+
color: var(--altinity-background);
52+
}
53+
54+
/* Table header styling */
55+
th {
56+
background-color: var(--altinity-accent);
57+
color: var(--altinity-white);
58+
padding: 10px 16px;
59+
text-align: left;
60+
border: none;
61+
border-bottom: 2px solid var(--altinity-background);
62+
white-space: nowrap;
63+
}
64+
65+
th.hth {
66+
border-bottom: 1px solid var(--altinity-accent);
67+
border-right: 2px solid var(--altinity-background);
68+
}
69+
70+
/* Table header sorting styling */
71+
th {
72+
cursor: pointer;
73+
}
74+
75+
th.no-sort {
76+
pointer-events: none;
77+
}
78+
79+
th::after,
80+
th::before {
81+
transition: color 0.2s ease-in-out;
82+
font-size: 1.2em;
83+
color: transparent;
84+
}
85+
86+
th::after {
87+
margin-left: 3px;
88+
content: '\025B8';
89+
}
90+
91+
th:hover::after {
92+
color: inherit;
93+
}
94+
95+
th.dir-d::after {
96+
color: inherit;
97+
content: '\025BE';
98+
}
99+
100+
th.dir-u::after {
101+
color: inherit;
102+
content: '\025B4';
103+
}
104+
105+
/* Table body row styling */
106+
tr:hover {
107+
background-color: var(--altinity-light-gray);
108+
}
109+
110+
/* Table cell styling */
111+
td {
112+
padding: 8px 8px;
113+
border: 1px solid var(--altinity-accent);
114+
}
115+
116+
/* Link styling */
117+
a {
118+
color: var(--altinity-accent);
119+
text-decoration: none;
120+
}
121+
122+
a:hover {
123+
color: var(--altinity-highlight);
124+
text-decoration: underline;
125+
}
126+
</style>
127+
<title>{{ title }}</title>
128+
<link rel="icon" type="image/svg+xml"
129+
href='data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgaWQ9ImEiCiAgIHZpZXdCb3g9IjAgMCA5MS42NjAwMDYgMTA1Ljk5IgogICB2ZXJzaW9uPSIxLjEiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImxvZ29faWNvbi5zdmciCiAgIHdpZHRoPSI5MS42NjAwMDQiCiAgIGhlaWdodD0iMTA1Ljk5IgogICBpbmtzY2FwZTp2ZXJzaW9uPSIxLjEuMiAoMGEwMGNmNTMzOSwgMjAyMi0wMi0wNCkiCiAgIHhtbG5zOmlua3NjYXBlPSJodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy9uYW1lc3BhY2VzL2lua3NjYXBlIgogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIGlkPSJuYW1lZHZpZXc0NyIKICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiCiAgICAgYm9yZGVyb3BhY2l0eT0iMS4wIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAuMCIKICAgICBpbmtzY2FwZTpwYWdlY2hlY2tlcmJvYXJkPSIwIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSI1Ljc5Nzg1NTIiCiAgICAgaW5rc2NhcGU6Y3g9IjkxLjA2ODE1OSIKICAgICBpbmtzY2FwZTpjeT0iNTQuOTM0MTA3IgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTg1MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDE2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIxNzc0IgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNyIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImEiIC8+CiAgPGRlZnMKICAgICBpZD0iZGVmczQiPgogICAgPHN0eWxlCiAgICAgICBpZD0ic3R5bGUyIj4uYntmaWxsOiNmZmY7fS5je2ZpbGw6IzE5OWRjZjt9PC9zdHlsZT4KICA8L2RlZnM+CiAgPGcKICAgICBpZD0iZzIyIj4KICAgIDxwb2x5Z29uCiAgICAgICBjbGFzcz0iYyIKICAgICAgIHBvaW50cz0iNDUuODgsMCA0NS44OCwwLjA0IDIyLjk0LDEzLjMgMjIuOTMsMTMuMyAyMi45MywxMy4zIDAuMDksMjYuNDkgMC4wOSwyNi40OSAwLjA5LDI2LjQ5IDAsMjYuNTQgMC4wOSwyNi41OSAwLjA5LDUwLjk2IDY2Ljg2LDEyLjEyICIKICAgICAgIGlkPSJwb2x5Z29uNiIgLz4KICAgIDxwb2x5Z29uCiAgICAgICBjbGFzcz0iYyIKICAgICAgIHBvaW50cz0iMjIuOTQsNDIuMjkgNC4yMSw1My4xOSAyMi45NCw2NC4wOCAiCiAgICAgICBpZD0icG9seWdvbjgiIC8+CiAgICA8cG9seWdvbgogICAgICAgY2xhc3M9ImMiCiAgICAgICBwb2ludHM9IjAuMDksNTUuNTkgMC4wOSw3OS40MyAwLDc5LjQ4IDAuMDksNzkuNTQgMC4wOSwxMDUuOTkgMjIuOCw5Mi44OCAyMi44LDkyLjg4IDQzLjc1LDgwLjc5IDAuMjMsNTUuNTEgIgogICAgICAgaWQ9InBvbHlnb24xMCIgLz4KICAgIDxwb2x5Z29uCiAgICAgICBjbGFzcz0iYyIKICAgICAgIHBvaW50cz0iODkuNjEsMjUuMTcgNzAuOTIsMTQuMzggNDguMDMsMjcuNyA2NC4xOCwzNy4wMiA2NC4yMiwzNi45NiA2Ni43OSwzOC40NSAiCiAgICAgICBpZD0icG9seWdvbjEyIiAvPgogICAgPGcKICAgICAgIGlkPSJnMTgiPgogICAgICA8cG9seWdvbgogICAgICAgICBjbGFzcz0iYyIKICAgICAgICAgcG9pbnRzPSI5MS42Niw1Mi44MiA5MS42Myw1Mi44MyA3Ni4zMyw0NCA5MS42Niw1Mi45MiAiCiAgICAgICAgIGlkPSJwb2x5Z29uMTQiIC8+CiAgICAgIDxwb2x5Z29uCiAgICAgICAgIGNsYXNzPSJjIgogICAgICAgICBwb2ludHM9IjkxLjY2LDEwNS43NiA5MS42Niw1Ny41NSA2OC43MSw0NC4yIDY4LjcxLDkyLjUxICIKICAgICAgICAgaWQ9InBvbHlnb24xNiIgLz4KICAgIDwvZz4KICAgIDxwb2x5Z29uCiAgICAgICBjbGFzcz0iYyIKICAgICAgIHBvaW50cz0iOTEuNjYsNTIuODUgOTEuNjYsMjguNjEgNzAuNzcsNDAuNzYgNzYuMjgsNDMuOTcgIgogICAgICAgaWQ9InBvbHlnb24yMCIgLz4KICA8L2c+Cjwvc3ZnPgo='
130+
/>
131+
</head>
132+
133+
<body>
134+
<p><img class="logo"
135+
src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIGlkPSJhIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NjEuNTUgMTA1Ljk5Ij48ZGVmcz48c3R5bGU+LmJ7ZmlsbDojZmZmO30uY3tmaWxsOiMxOTlkY2Y7fTwvc3R5bGU+PC9kZWZzPjxnPjxwb2x5Z29uIGNsYXNzPSJjIiBwb2ludHM9Ii4wOSA1MC45NiA2Ni44NiAxMi4xMiA0NS44OCAwIDQ1Ljg4IC4wNCAyMi45NCAxMy4zIDIyLjkzIDEzLjMgMjIuOTMgMTMuMyAuMDkgMjYuNDkgLjA5IDI2LjQ5IC4wOSAyNi40OSAwIDI2LjU0IC4wOSAyNi41OSAuMDkgNTAuOTYiLz48cG9seWdvbiBjbGFzcz0iYyIgcG9pbnRzPSI0LjIxIDUzLjE5IDIyLjk0IDY0LjA4IDIyLjk0IDQyLjI5IDQuMjEgNTMuMTkiLz48cG9seWdvbiBjbGFzcz0iYyIgcG9pbnRzPSI0My43NSA4MC43OSAuMjMgNTUuNTEgLjA5IDU1LjU5IC4wOSA3OS40MyAwIDc5LjQ4IC4wOSA3OS41NCAuMDkgMTA1Ljk5IDIyLjggOTIuODggMjIuOCA5Mi44OCA0My43NSA4MC43OSIvPjxwb2x5Z29uIGNsYXNzPSJjIiBwb2ludHM9IjY0LjIyIDM2Ljk2IDY2Ljc5IDM4LjQ1IDg5LjYxIDI1LjE3IDcwLjkyIDE0LjM4IDQ4LjAzIDI3LjcgNjQuMTggMzcuMDIgNjQuMjIgMzYuOTYiLz48Zz48cG9seWdvbiBjbGFzcz0iYyIgcG9pbnRzPSI3Ni4zMyA0NCA5MS42NiA1Mi45MiA5MS42NiA1Mi44MiA5MS42MyA1Mi44MyA3Ni4zMyA0NCIvPjxwb2x5Z29uIGNsYXNzPSJjIiBwb2ludHM9IjY4LjcxIDQ0LjIgNjguNzEgOTIuNTEgOTEuNjYgMTA1Ljc2IDkxLjY2IDU3LjU1IDY4LjcxIDQ0LjIiLz48L2c+PHBvbHlnb24gY2xhc3M9ImMiIHBvaW50cz0iNzAuNzcgNDAuNzYgNzYuMjggNDMuOTcgOTEuNjYgNTIuODUgOTEuNjYgMjguNjEgNzAuNzcgNDAuNzYiLz48L2c+PHBhdGggY2xhc3M9ImIiIGQ9Ik0xNDkuOTIsMjkuNjZoMTIuMzhsMTkuNzIsNDYuNjdoLTEzLjc3bC0zLjM4LTguMjdoLTE3Ljg3bC0zLjMxLDguMjdoLTEzLjVsMTkuNzItNDYuNjdabTExLjI1LDI4LjRsLTUuMTYtMTMuMTctNS4yMywxMy4xN2gxMC4zOVoiLz48cGF0aCBjbGFzcz0iYiIgZD0iTTE4Ni41MywyOS45OWgxMi44NHYzNS4wOGgyMi40NHYxMS4yNWgtMzUuMjhWMjkuOTlaIi8+PHBhdGggY2xhc3M9ImIiIGQ9Ik0yMzAsNDEuMjVoLTEzLjl2LTExLjI1aDQwLjY0djExLjI1aC0xMy45djM1LjA4aC0xMi44NFY0MS4yNVoiLz48cGF0aCBjbGFzcz0iYiIgZD0iTTI2Mi42MywyOS45OWgxMi45MXY0Ni4zM2gtMTIuOTFWMjkuOTlaIi8+PHBhdGggY2xhc3M9ImIiIGQ9Ik0yODQuMDEsMjkuOTloMTEuOThsMTkuMDYsMjQuNDlWMjkuOTloMTIuNzF2NDYuMzNoLTExLjI1bC0xOS43OS0yNS40MnYyNS40MmgtMTIuNzFWMjkuOTlaIi8+PHBhdGggY2xhc3M9ImIiIGQ9Ik0zMzYuMjQsMjkuOTloMTIuOTF2NDYuMzNoLTEyLjkxVjI5Ljk5WiIvPjxwYXRoIGNsYXNzPSJiIiBkPSJNMzY4Ljk0LDQxLjI1aC0xMy45di0xMS4yNWg0MC42NHYxMS4yNWgtMTMuOXYzNS4wOGgtMTIuODRWNDEuMjVaIi8+PHBhdGggY2xhc3M9ImIiIGQ9Ik00MTYuNjgsNTguOThsLTE3LjYxLTI4Ljk5aDE0LjYzbDkuNTMsMTYuODgsOS42LTE2Ljg4aDE0LjM2bC0xNy42MSwyOC43OXYxNy41NGgtMTIuOTF2LTE3LjM0WiIvPjxnPjxwYXRoIGNsYXNzPSJiIiBkPSJNNDU3Ljk5LDM0Ljg5Yy4yOS0uMDksLjU0LS4yNCwuNzMtLjQ0LC4yNS0uMjUsLjM3LS41OCwuMzctMSwwLS40Ny0uMTgtLjg1LS41My0xLjEyLS4zNC0uMjYtLjc5LS40LTEuMzMtLjRoLTIuMDZjLS4wNywwLS4xMiwuMDYtLjEyLC4xMnY0LjYxYzAsLjA3LC4wNiwuMTIsLjEyLC4xMmguNjhjLjA3LDAsLjEyLS4wNiwuMTItLjEydi0xLjYyaC45OWwxLjI5LDEuNjlzLjA2LC4wNSwuMSwuMDVoLjg0cy4wOS0uMDMsLjExLS4wN2MuMDItLjA0LC4wMi0uMDktLjAxLS4xM2wtMS4zMi0xLjcxWm0uMTUtMS40YzAsLjIzLS4wOCwuMzktLjI1LC41MS0uMTgsLjEzLS40MiwuMTktLjcyLC4xOWgtMS4xOXYtMS4zOWgxLjIzYy4zLDAsLjU0LC4wNiwuNywuMTksLjE1LC4xMiwuMjMsLjI4LC4yMywuNVoiLz48cGF0aCBjbGFzcz0iYiIgZD0iTTQ2MS4yLDMyLjY5Yy0uMjQtLjU2LS41Ny0xLjA1LS45OC0xLjQ3LS40MS0uNDItLjktLjc1LTEuNDYtLjk5LS41Ni0uMjQtMS4xNy0uMzYtMS44Mi0uMzZzLTEuMjYsLjEyLTEuODIsLjM3Yy0uNTYsLjI1LTEuMDYsLjU4LTEuNDgsMS0uNDIsLjQyLS43NSwuOTItLjk4LDEuNDctLjI0LC41Ni0uMzYsMS4xNi0uMzYsMS43OXMuMTIsMS4yMywuMzYsMS43OWMuMjQsLjU2LC41NiwxLjA1LC45OCwxLjQ3LC40MSwuNDIsLjksLjc1LDEuNDYsLjk5LC41NiwuMjQsMS4xNywuMzYsMS44MSwuMzZzMS4yNi0uMTIsMS44Mi0uMzdjLjU2LS4yNSwxLjA2LS41OCwxLjQ3LTEsLjQyLS40MiwuNzUtLjkyLC45OC0xLjQ3LC4yNC0uNTYsLjM2LTEuMTYsLjM2LTEuNzlzLS4xMi0xLjIzLS4zNi0xLjc5Wm0tLjMsMS43OWMwLC41NC0uMSwxLjA2LS4zLDEuNTUtLjIsLjQ5LS40OCwuOTEtLjg0LDEuMjctLjM1LC4zNi0uNzgsLjY1LTEuMjcsLjg2LS40OSwuMjEtMS4wMiwuMzItMS41NywuMzJzLTEuMDktLjExLTEuNTYtLjMxYy0uNDgtLjIxLS45LS41LTEuMjUtLjg2LS4zNS0uMzYtLjYzLS43OC0uODMtMS4yNy0uMi0uNDgtLjMtMS0uMy0xLjU0cy4xLTEuMDYsLjMtMS41NWMuMi0uNDgsLjQ4LS45MSwuODQtMS4yNywuMzYtLjM2LC43OC0uNjUsMS4yNi0uODYsLjQ4LS4yMSwxLjAxLS4zMiwxLjU4LS4zMnMxLjA5LC4xMSwxLjU3LC4zMWMuNDgsLjIxLC45LC41LDEuMjUsLjg2LC4zNSwuMzYsLjYzLC43OCwuODMsMS4yNywuMiwuNDgsLjMsMSwuMywxLjU0WiIvPjwvZz48L3N2Zz4="
136+
alt="logo"></p>
137+
138+
<h1>{{ title }}</h1>
139+
<table>
140+
<tbody>
141+
<tr>
142+
<th class="hth no-sort">Pull Request</th>
143+
<td>{{ pr_info_html }}</td>
144+
</tr>
145+
<tr>
146+
<th class="hth no-sort">Workflow Run</th>
147+
<td><a href="https://github.com/{{ github_repo }}/actions/runs/{{ workflow_id }}">{{ workflow_id }}</a></td>
148+
</tr>
149+
<tr>
150+
<th class="hth no-sort">Commit</th>
151+
<td><a href="https://github.com/{{ github_repo }}/commit/{{ commit_sha }}">{{ commit_sha }}</a></td>
152+
</tr>
153+
<tr>
154+
<th class="hth no-sort">Build Report</th>
155+
<td><a href="https://s3.amazonaws.com/{{ s3_bucket }}/{{ pr_number }}/{{ commit_sha }}/builds/report.html">Build Report</a></td>
156+
</tr>
157+
<tr>
158+
<th class="hth no-sort">Date</th>
159+
<td> {{ date }}</td>
160+
</tr>
161+
</tbody>
162+
</table>
163+
{% if is_preview %}
164+
<p style="font-weight: bold;color: red;">This is a preview. The workflow is not yet finished.</p>
165+
{% endif %}
166+
<h2>Table of Contents</h2>
167+
<ul>
168+
{%- if pr_number != 0 %}<li><a href="#new-fails-pr">New Fails in PR</a> ({{ counts.pr_new_fails }})</li>{% endif %}
169+
<li><a href="#ci-jobs-status">CI Jobs Status</a> ({{ counts.jobs_status }})</li>
170+
<li><a href="#checks-errors">Checks Errors</a> ({{ counts.checks_errors }})</li>
171+
<li><a href="#checks-fails">Checks New Fails</a> ({{ counts.checks_new_fails }})</li>
172+
<li><a href="#regression-fails">Regression New Fails</a> ({{ counts.regression_new_fails }})</li>
173+
<li><a href="#docker-images-cves">Docker Images CVEs</a> ({{ counts.cves }})</li>
174+
<li><a href="#checks-known-fails">Checks Known Fails</a> ({{ counts.checks_known_fails }})</li>
175+
</ul>
176+
177+
{%- if pr_number != 0 -%}
178+
<h2 id="new-fails-pr">New Fails in PR</h2>
179+
<p> Compared with base sha {{ base_sha }} </p>
180+
{{ new_fails_html }}
181+
{%- endif %}
182+
183+
<h2 id="ci-jobs-status">CI Jobs Status</h2>
184+
{{ ci_jobs_status_html }}
185+
186+
<h2 id="checks-errors">Checks Errors</h2>
187+
{{ checks_errors_html }}
188+
189+
<h2 id="checks-fails">Checks New Fails</h2>
190+
{{ checks_fails_html }}
191+
192+
<h2 id="regression-fails">Regression New Fails</h2>
193+
{{ regression_fails_html }}
194+
195+
<h2 id="docker-images-cves">Docker Images CVEs</h2>
196+
{{ docker_images_cves_html }}
197+
198+
<h2 id="checks-known-fails">Checks Known Fails</h2>
199+
<p>
200+
Fail reason conventions:<br/>
201+
KNOWN - Accepted fail and fix is not planned<br/>
202+
INVESTIGATE - We don't know why it fails<br/>
203+
NEEDSFIX - Investigation done and a fix is needed to make it pass<br/>
204+
</p>
205+
{{ checks_known_fails_html }}
206+
207+
<script>
208+
document.addEventListener('click', function (e) {
209+
try {
210+
function findElementRecursive(element, tag) {
211+
return element.nodeName === tag ? element :
212+
findElementRecursive(element.parentNode, tag)
213+
}
214+
var descending_th_class = ' dir-d '
215+
var ascending_th_class = ' dir-u '
216+
var ascending_table_sort_class = 'asc'
217+
var regex_dir = / dir-(u|d) /
218+
var alt_sort = e.shiftKey || e.altKey
219+
var element = findElementRecursive(e.target, 'TH')
220+
var tr = findElementRecursive(element, 'TR')
221+
var table = findElementRecursive(tr, 'TABLE')
222+
function reClassify(element, dir) {
223+
element.className = element.className.replace(regex_dir, '') + dir
224+
}
225+
function getValue(element) {
226+
return (
227+
(alt_sort && element.getAttribute('data-sort-alt')) ||
228+
element.getAttribute('data-sort') || element.innerText
229+
)
230+
}
231+
if (true) {
232+
var column_index
233+
var nodes = tr.cells
234+
for (var i = 0; i < nodes.length; i++) {
235+
if (nodes[i] === element) {
236+
column_index = element.getAttribute('data-sort-col') || i
237+
} else {
238+
reClassify(nodes[i], '')
239+
}
240+
}
241+
var dir = descending_th_class
242+
if (
243+
element.className.indexOf(descending_th_class) !== -1 ||
244+
(table.className.indexOf(ascending_table_sort_class) !== -1 &&
245+
element.className.indexOf(ascending_th_class) == -1)
246+
) {
247+
dir = ascending_th_class
248+
}
249+
reClassify(element, dir)
250+
var org_tbody = table.tBodies[0]
251+
var rows = [].slice.call(org_tbody.rows, 0)
252+
var reverse = dir === ascending_th_class
253+
rows.sort(function (a, b) {
254+
var x = getValue((reverse ? a : b).cells[column_index])
255+
var y = getValue((reverse ? b : a).cells[column_index])
256+
return isNaN(x - y) ? x.localeCompare(y) : x - y
257+
})
258+
var clone_tbody = org_tbody.cloneNode()
259+
while (rows.length) {
260+
clone_tbody.appendChild(rows.splice(0, 1)[0])
261+
}
262+
table.replaceChild(clone_tbody, org_tbody)
263+
}
264+
} catch (error) {
265+
}
266+
});
267+
</script>
268+
</body>
269+
</html>

0 commit comments

Comments
 (0)