[Qa-jenkins-scm] [Git][qa/jenkins.debian.net][master] 2 commits: reproducible Debian: stop hardcoding Debian suites in _html_dashboard.sh, use...
Holger Levsen (@holger)
gitlab at salsa.debian.org
Wed Jun 14 00:23:24 BST 2023
Holger Levsen pushed to branch master at Debian QA / jenkins.debian.net
Commits:
c9b4b359 by Holger Levsen at 2023-06-13T23:48:28+02:00
reproducible Debian: stop hardcoding Debian suites in _html_dashboard.sh, use data from _common.sh instead
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
d4b9f4ea by Holger Levsen at 2023-06-14T01:22:59+02:00
reproducible Debian: refactor make_graph.py and related code. add colors for bookworm and trixie
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
4 changed files:
- TODO
- bin/make_graph.py
- bin/reproducible_common.sh
- bin/reproducible_html_dashboard.sh
Changes:
=====================================
TODO
=====================================
@@ -35,8 +35,7 @@ See link:https://jenkins.debian.net/userContent/about.html["about jenkins.debian
** run the maintenance jobs (to create the chdist)
** once the above jobs are successful, restarts the builders
** adopt whatever suite specific hacks _create_meta_pkg_sets.sh has
-** tweak reproducible_common.sh to start collect statistics on the daily builds for trixie too (and make_graph.py too)
-** tweak reproducible_html_dashboard.sh as needed (search for old-stable and old-testing..)
+** tweak reproducible_common.sh in three locations to start collect statistics on the daily builds for trixie too (and make_graph.py too: (in lines 40 and 54++)
** adjust chroot_installation- jobs
** tweak jenkins-shell-monitor.sh as needed
** adjust multiarch jobs in job-cfg/udd.yaml
@@ -48,6 +47,7 @@ See link:https://jenkins.debian.net/userContent/about.html["about jenkins.debian
=== 2023 things
* things still to be done after the bookworm release and as trixie is open for development
+** update reproducible_common.sh with regards to the usrmerge variation in certain suites
** update find_obsolete_transitional_packages.sh
** maybe wait til 12.1 (= ~1 month) until we upgrade jenkins to bookworm, let's see
*** upgrade to postgresql-15:
=====================================
bin/make_graph.py
=====================================
@@ -34,12 +34,31 @@ def main():
r('palette(c("#73d216", "#f57900", "#cc0000", "#2e3436", "#888a85"))')
elif int(colors) == 6:
r('palette(c("#73d216", "#f57900", "#cc0000", "#2e3436", "#ffdd00", "#aaaaaa"))')
- elif int(colors) == 20:
- r('palette(c("#4e9a06", "#57a231", "#73d216", "#8ae234", "#9af244", \
- "#ce5c00", "#d56900", "#f57900", "#fcaf3e", "#fcea27", \
- "#930000", "#a40000", "#cc0000", "#e21111", "#fc2a1a", \
- "#2e3436", "#555753", "#888a85", "#b8bbb4", "#dddddd" ))')
- elif int(colors) < 39:
+ elif int(colors) == 99:
+ # each row represents one state: reproducible, FTBR, FTBFS, other
+ # each column represents one suite:
+ # stretch buster bullseye bookworm trixie unstable experimental
+ colors='28' # ADJUST THIS NUMBER TOO: 28 = 8 releases * 4 states
+ r('palette(c("#4e9a06", "#57a231", "#73d216", "#8ae234", "#9af244", "#acff65", "#afff85", \
+ "#ce5c00", "#d56900", "#f57900", "#fcaf3e", "#fc9a27", "#fdba37", "#facea2", \
+ "#930000", "#a40000", "#cc0000", "#e21100", "#fc2a00", "#fd1a1a", "#ff0a2a", \
+ "#222222", "#333333", "#444444", "#555555", "#666666", "#777777", "#888888" ))')
+ elif int(colors) == 101:
+ r('palette(c("#4e9a06", "#000000"))') # stretch
+ elif int(colors) == 102:
+ r('palette(c("#57a231", "#000000"))') # buster
+ elif int(colors) == 103:
+ r('palette(c("#73d216", "#000000"))') # bullseye
+ elif int(colors) == 104:
+ r('palette(c("#8ae234", "#000000"))') # bookworm
+ elif int(colors) == 105:
+ r('palette(c("#9af244", "#000000"))') # trixie
+ elif int(colors) == 200:
+ r('palette(c("#acff65", "#000000"))') # unstable
+ elif int(colors) == 300:
+ r('palette(c("#afff95", "#000000"))') # experimental
+ else:
+ # used for the user-tagged bugs graphs
r('palette(c("#fce94f", "#c4a000", "#eeeeec", "#babdb6", \
"#fcaf3e", "#ce5c00", "#ad7fa8", "#5c3566", \
"#e9b96e", "#8f5902", "#8ae234", "#4e9a06", \
@@ -48,22 +67,8 @@ def main():
"#ce5c00", "#73d216", "#edd400", "#f57900", \
"#c17d11", "#3465a4", "#666666", "#aaaaaa", \
"#aa00aa", "#ff55ff", "#123456", "#7890ab" ))')
- elif int(colors) == 40:
- r('palette(c("#4e9a06", "#000000"))')
- elif int(colors) == 41:
- r('palette(c("#57a231", "#000000"))')
- elif int(colors) == 42:
- r('palette(c("#73d216", "#000000"))')
- elif int(colors) == 43:
- r('palette(c("#8ae234", "#000000"))')
- elif int(colors) == 44:
- r('palette(c("#9cf345", "#000000"))')
- elif int(colors) == 45:
- r('palette(c("#acff85", "#000000"))')
- elif int(colors) == 46:
- r('palette(c("#cfff95", "#000000"))')
- # "revert the hack" (it's still a hack :)
- if int(colors) >= 40:
+ # "revert the hack" - it's still a hack though
+ if int(colors) >= 100:
colors='1'
r('v <- t[0:nrow(t),0:'+colors+']')
# make graph since day 1
=====================================
bin/reproducible_common.sh
=====================================
@@ -34,7 +34,11 @@ CHPATH=/srv/reproducible-results/chdist
mkdir -p "$CHPATH"
# Debian suites being tested
-SUITES="unstable trixie bookworm bullseye buster experimental"
+SUITES="buster bullseye bookworm trixie unstable experimental"
+TESTING_SUITE="trixie"
+# released Debian suites (some still tested, some not)
+RELEASED_SUITES="bookworm bullseye buster stretch"
+# Debian suites not being tested anymore:
ARCHIVED_SUITES="stretch"
# Debian architectures being tested
ARCHS="amd64 arm64 armhf i386"
@@ -959,13 +963,13 @@ create_debian_png_from_table() {
COLORS=${COLOR[$1]}
if [ $1 -eq 2 ] ; then
case "$SUITE" in
- stretch) COLORS=40 ;;
- buster) COLORS=41 ;;
- bullseye) COLORS=42 ;;
- bookworm) COLORS=43 ;;
- trixie) COLORS=44 ;;
- unstable) COLORS=45 ;;
- experimental) COLORS=46 ;; # increasing this also needs changes in make_graph.py around line 64
+ stretch) COLORS=101 ;;
+ buster) COLORS=102 ;;
+ bullseye) COLORS=103 ;;
+ bookworm) COLORS=104 ;;
+ trixie) COLORS=105 ;; # adding another suite after this one also needs changes in make_graph.py around line 64
+ unstable) COLORS=200 ;;
+ experimental) COLORS=300 ;;
esac
fi
local WIDTH=1920
=====================================
bin/reproducible_html_dashboard.sh
=====================================
@@ -28,7 +28,7 @@ FIELDS[0]="datum, reproducible, FTBR, FTBFS, other, untested"
FIELDS[1]="datum"
for i in reproducible FTBR FTBFS other ; do
# $ARCHIVED_SUITES are needed as we still collect stats in create_debian_png_from_table() as part of wider stats
- for j in $SUITES $ARCHIVED_SUITES ; do
+ for j in $ARCHIVED_SUITES $SUITES ; do
FIELDS[1]="${FIELDS[1]}, ${i}_${j}"
done
done
@@ -80,7 +80,7 @@ REPRODUCIBLE_DONE="$REPRODUCIBLE_DONE)"
REPRODUCIBLE_OPEN="$REPRODUCIBLE_OPEN)"
FIELDS[10]="datum, with_buildinfo, without_buildinfo"
COLOR[0]=5
-COLOR[1]=20
+COLOR[1]=99
COLOR[2]=1
COLOR[3]=32
COLOR[4]=1
@@ -367,12 +367,12 @@ write_build_performance_stats() {
for ARCH in ${ARCHS} ; do
write_page " <th>$ARCH</th>"
done
- write_page "</tr><tr><td class=\"left\">oldest build result in bookworm / unstable / experimental</td>"
+ write_page "</tr><tr><td class=\"left\">oldest build result in ${TESTING_SUITE} / unstable / experimental</td>"
for ARCH in ${ARCHS} ; do
- AGE_BOOKWORM=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='bookworm' AND architecture='$ARCH' AND datum='$DATE'")
+ AGE_TESTING=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='${TESTING_SUITE}' AND architecture='$ARCH' AND datum='$DATE'")
AGE_UNSTABLE=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='unstable' AND architecture='$ARCH' AND datum='$DATE'")
AGE_EXPERIMENTAL=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='experimental' AND architecture='$ARCH' AND datum='$DATE'")
- write_page "<td>$AGE_BOOKWORM / $AGE_UNSTABLE / $AGE_EXPERIMENTAL days</td>"
+ write_page "<td>$AGE_TESTING / $AGE_UNSTABLE / $AGE_EXPERIMENTAL days</td>"
done
write_page "</tr><tr><td class=\"left\">Build jobs configured</td>"
for ARCH in ${ARCHS} ; do
@@ -569,13 +569,24 @@ create_dashboard_page() {
ARCH="amd64"
echo "$(date -u) - starting to write $PAGE page."
write_page_header $VIEW "Overview of various statistics about reproducible builds"
- write_suite_arch_table trixie unstable experimental
+ declare -a DEVELOPMENT_SUITES
+ for SUITE in $SUITES ; do
+ for s in ${RELEASED_SUITES} ; do
+ if [ "$SUITE" = "$s" ] ; then
+ continue 2
+ fi
+ done
+ DEVELOPMENT_SUITES=("${DEVELOPMENT_SUITES[@]}" "$SUITE")
+ done
+ write_suite_arch_table ${DEVELOPMENT_SUITES[@]}
# write suite graphs
for ARCH in ${ARCHS} ; do
for SUITE in $SUITES ; do
- if [ "$SUITE" != "trixie" ] && [ "$SUITE" != "unstable" ] && [ "$SUITE" != "experimental" ] ; then
- continue
- fi
+ for s in ${RELEASED_SUITES} ; do
+ if [ "$SUITE" = "$s" ] ; then
+ continue 2
+ fi
+ done
write_page " <a href=\"/debian/$SUITE/$ARCH\"><img src=\"/debian/$SUITE/$ARCH/${TABLE[0]}.png\" class=\"tripleview\" alt=\"$SUITE/$ARCH stats\"></a>"
done
SUITE="unstable"
@@ -601,10 +612,10 @@ create_dashboard_page() {
local TD_PKG_SID_FTBR="<tr><td class=\"left\"> - unreproducible ones</a></td><td></td>"
local TD_PKG_SID_FTBFS="<tr><td class=\"left\"> - failing to build</a></td><td></td>"
local TD_PKG_SID_ISSUES="<tr><td class=\"left\">packages in unstable which need to be fixed</td><td></td>"
- local TD_PKG_TESTING_NOISSUES="<tr><td class=\"left\">packages in bookworm with issues but without identified ones</td><td></td>"
+ local TD_PKG_TESTING_NOISSUES="<tr><td class=\"left\">packages in ${TESTING_SUITE} with issues but without identified ones</td><td></td>"
local TD_PKG_TESTING_FTBR="<tr><td class=\"left\"> - unreproducible ones</a></td><td></td>"
local TD_PKG_TESTING_FTBFS="<tr><td class=\"left\"> - failing to build</a></td><td></td>"
- local TD_PKG_TESTING_ISSUES="<tr><td class=\"left\">packages in bookworm which need to be fixed</td><td></td>"
+ local TD_PKG_TESTING_ISSUES="<tr><td class=\"left\">packages in ${TESTING_SUITE} which need to be fixed</td><td></td>"
for ARCH in ${ARCHS} ; do
SUITE="unstable"
gather_suite_arch_stats
@@ -616,8 +627,7 @@ create_dashboard_page() {
TD_PKG_SID_FTBR="$TD_PKG_SID_FTBR<td>$RESULT / $(bc_round "($RESULT*100/$COUNT_TOTAL)")%</td>"
RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status='FTBFS' AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
TD_PKG_SID_FTBFS="$TD_PKG_SID_FTBFS<td>$RESULT / $(bc_round "($RESULT*100/$COUNT_TOTAL)")%</td>"
- # define next stable release here:
- SUITE="bookworm"
+ SUITE="${TESTING_SUITE}"
gather_suite_arch_stats
TD_PKG_TESTING_ISSUES="$TD_PKG_TESTING_ISSUES<td>$(echo $COUNT_BAD + $COUNT_UGLY |bc) / $(echo $PERCENT_BAD + $PERCENT_UGLY|bc)%</td>"
RESULT=$(query_db "SELECT COUNT(*) FROM (SELECT s.id FROM sources AS s JOIN results AS r ON r.package_id=s.id WHERE r.status IN ('FTBR', 'FTBFS', 'blacklisted') AND s.id NOT IN (SELECT package_id FROM notes) AND s.suite='$SUITE' AND s.architecture='$ARCH') tmp")
@@ -661,7 +671,7 @@ create_dashboard_page() {
write_global_graph
done
write_page "</p><p style=\"clear:both;\">"
- write_page "<a href=\"index_performance.html\">Build network performance stats</a> and an <a href=\"index_oldsuites.html\">overview about the old suites 'bookworm', 'bullseye', 'buster' and 'stretch'</a> are also available."
+ write_page "<a href=\"index_performance.html\">Build network performance stats</a> and an <a href=\"index_oldsuites.html\">overview about older suites</a> are also available."
write_page "</p>"
# the end
write_page_footer
@@ -678,7 +688,7 @@ create_oldsuites_page() {
ARCH="amd64"
echo "$(date -u) - starting to write $PAGE page."
write_page_header $VIEW "Overview of old suites"
- for SUITE in bookworm bullseye buster stretch ; do
+ for SUITE in ${RELEASED_SUITES} ; do
write_suite_arch_table $SUITE
for ARCH in ${ARCHS} ; do
write_page " <a href=\"/debian/$SUITE/$ARCH\"><img src=\"/debian/$SUITE/$ARCH/${TABLE[0]}.png\" class=\"overview\" alt=\"$SUITE/$ARCH stats\"></a>"
@@ -770,15 +780,17 @@ create_performance_page() {
write_page "</p><p style=\"clear:both;\">"
for ARCH in ${ARCHS} ; do
for SUITE in $SUITES ; do
- if [ $SUITE != "trixie" ] && [ $SUITE != "unstable" ] && [ "$SUITE" != "experimental" ] ; then
- continue
- fi
+ for s in ${RELEASED_SUITES} ; do
+ if [ "$SUITE" = "$s" ] ; then
+ continue 2
+ fi
+ done
write_page " <a href=\"/debian/$SUITE/$ARCH/${TABLE[2]}.png\"><img src=\"/debian/$SUITE/$ARCH/${TABLE[2]}.png\" class=\"tripleview\" alt=\"age of oldest reproducible build result in $SUITE/$ARCH\"></a>"
done
write_page "</p><p style=\"clear:both;\">"
done
# the end
- write_page "<a href=\"index_oldsuites.html\">Build network performance stats for the old suites</a> are available as part of the old suites overview.<br />"
+ write_page "Build network performance stats for the old suites are available as <a href=\"index_oldsuites.html\">part of the old suites overview.</a><br />"
write_page "Daily <a href=\"https://jenkins.debian.net/view/reproducible/job/reproducible_html_nodes_info/lastBuild/console\">individual build node performance stats</a> are available as well as oldest results for "
for ARCH in ${ARCHS} ; do
comma_comma_and ${ARCH}
@@ -819,9 +831,11 @@ for ARCH in ${ARCHS} ; do
update_buildinfo_stats
gather_suite_arch_stats
# old suites are only updated every 12h
- if ( [ "$SUITE" != "trixie" ] && [ "$SUITE" != "unstable" ] && [ "$SUITE" != "experimental" ] ) && [[ $(($(date +%k) % 12)) -ne 0 ]]; then
- continue
- fi
+ for s in ${RELEASED_SUITES} ; do
+ if [ "$SUITE" = "$s" ] && [[ $(($(date +%k) % 12)) -ne 0 ]]; then
+ continue 2
+ fi
+ done
create_suite_arch_stats_page
done
done
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/compare/e950015c42b7694415740ec51c376585cbecc5db...d4b9f4eaa7c5150c9239333a8433fb29e29b4e65
--
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/compare/e950015c42b7694415740ec51c376585cbecc5db...d4b9f4eaa7c5150c9239333a8433fb29e29b4e65
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/qa-jenkins-scm/attachments/20230613/79ea7bae/attachment-0001.htm>
More information about the Qa-jenkins-scm
mailing list