-
-
Notifications
You must be signed in to change notification settings - Fork 74
/
Copy pathgenerateBuildMatrix.sh
executable file
·73 lines (61 loc) · 2.53 KB
/
generateBuildMatrix.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/bin/bash
# Generates markdown table of build job status
allJdkVersions=("jdk8u" "jdk11u" "jdk17u" "jdk21" "jdk")
buildFile="/tmp/build.txt"
buildJobFile="/tmp/build_jobs.txt"
buildLinksFile="/tmp/build_links.txt"
excludedKeywords=("SmokeTests" "hotspot" "corretto" "bisheng" "dragonwell" "openj9")
if [[ -f ${buildFile} ]]; then
echo "Removing previous ${buildFile} ${buildJobFile} ${buildLinksFile} files"
rm ${buildFile}
rm ${buildJobFile}
rm ${buildLinksFile}
fi
for i in ${allJdkVersions[@]}; do
curl -s "https://ci.adoptium.net/job/build-scripts/job/jobs/job/${i}/" | egrep -o "job/${i}-[^\/]+" >> ${buildJobFile}
done
# Filter out jobs matching excludedKeywords
for key in ${excludedKeywords[@]}; do
sed -i "/${key}/d" ${buildJobFile}
done
# The sed command fails on Mac OS X, but those users can install gnu-sed
echo "This will take a few minutes to complete."
# Header row
echo -n "| Platform |" > ${buildFile}
for jdkVersionX in ${allJdkVersions[@]}; do
echo -n " ${jdkVersionX} |" | sed -e 's/jdk/Java /;s/u//;s/ / HEAD /' >> ${buildFile}
done
# Delimiter row
echo -n $'\n|------' >> ${buildFile} # to match Platform column
for i in ${allJdkVersions[@]}; do
echo -n "|----" >> ${buildFile}
done
echo "|" >> ${buildFile}
# Prep buildLinksFile
echo "" >> ${buildLinksFile}
rowNum=1
cat ${buildJobFile}| cut -d'/' -f2 | sed -r 's/jdk[0-9]*u?\-//g' | sort | uniq | while read buildName;
do
# buildName should be of the form: aix-ppc64-temurin
echo -n "| ${buildName} | " >> ${buildFile}
colNum=1
for jdkVersionX in ${allJdkVersions[@]}; do
jenkinsJobName="${jdkVersionX}-${buildName}"
code=$(curl -L -s -o /dev/null -w "%{http_code}" "https://ci.adoptium.net/job/build-scripts/job/jobs/job/${jdkVersionX}/job/${jenkinsJobName}")
if [[ ${code} = 200 ]]; then
echo -n "[![Build Status][i-r${rowNum}c${colNum}]][j-r${rowNum}c${colNum}]" >> ${buildFile}
echo "[i-r${rowNum}c${colNum}]: https://ci.adoptium.net/buildStatus/icon?job=build-scripts/jobs/${jdkVersionX}/${jenkinsJobName}" >> ${buildLinksFile}
echo "[j-r${rowNum}c${colNum}]: https://ci.adoptium.net/job/build-scripts/job/jobs/job/${jdkVersionX}/job/${jenkinsJobName}" >> ${buildLinksFile}
else
echo -n "N/A" >> ${buildFile}
fi
echo -n " | " >> ${buildFile}
((++colNum))
done
echo "" >> ${buildFile}
((++rowNum))
done
cat ${buildLinksFile} >> ${buildFile}
rm ${buildJobFile}
rm ${buildLinksFile}
echo "Complete - markdown out has been generated in ${buildFile}"