[Qa-jenkins-scm] [Git][qa/jenkins.debian.net][master] 3 commits: reproducible Debian dashboard: bookworm is the new relevant suite, move bullseye to old suites
Holger Levsen (@holger)
gitlab at salsa.debian.org
Tue Aug 17 14:08:32 BST 2021
Holger Levsen pushed to branch master at Debian QA / jenkins.debian.net
Commits:
050159ca by Holger Levsen at 2021-08-17T15:07:59+02:00
reproducible Debian dashboard: bookworm is the new relevant suite, move bullseye to old suites
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
e255b6e8 by Holger Levsen at 2021-08-17T15:07:59+02:00
drop unused function
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
9229cfe2 by Holger Levsen at 2021-08-17T15:07:59+02:00
reproducible Debian: add support for bookworm to create_debian_png_from_table()
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
3 changed files:
- bin/make_graph.py
- bin/reproducible_common.sh
- bin/reproducible_html_dashboard.sh
Changes:
=====================================
bin/make_graph.py
=====================================
@@ -1,7 +1,7 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#
-# Copyright 2009-2019 Holger Levsen (holger at layer-acht.org)
+# Copyright 2009-2021 Holger Levsen (holger at layer-acht.org)
#
# based on similar code taken from piuparts-reports.py written by me
@@ -58,6 +58,8 @@ def main():
r('palette(c("#8ae234", "#000000"))')
elif int(colors) == 44:
r('palette(c("#9cf345", "#000000"))')
+ elif int(colors) == 45:
+ r('palette(c("#acff85", "#000000"))')
# "revert the hack" (it's still a hack :)
if int(colors) >= 40:
colors='1'
=====================================
bin/reproducible_common.sh
=====================================
@@ -816,44 +816,52 @@ create_debian_png_from_table() {
# compatibility with postgres
query_to_csv "SELECT stats.datum,
COALESCE(reproducible_stretch,0) AS reproducible_stretch,
- COALESCE(reproducible_bullseye,0) AS reproducible_bullseye,
COALESCE(reproducible_buster,0) AS reproducible_buster,
+ COALESCE(reproducible_bullseye,0) AS reproducible_bullseye,
+ COALESCE(reproducible_bookworm,0) AS reproducible_bookworm,
COALESCE(reproducible_unstable,0) AS reproducible_unstable,
COALESCE(reproducible_experimental,0) AS reproducible_experimental,
COALESCE(FTBR_stretch,0) AS FTBR_stretch,
COALESCE(FTBR_buster,0) AS FTBR_buster,
COALESCE(FTBR_bullseye,0) AS FTBR_bullseye,
+ COALESCE(FTBR_bookworm,0) AS FTBR_bookworm,
COALESCE(FTBR_unstable,0) AS FTBR_unstable,
COALESCE(FTBR_experimental,0) AS FTBR_experimental,
COALESCE(FTBFS_stretch,0) AS FTBFS_stretch,
COALESCE(FTBFS_buster,0) AS FTBFS_buster,
COALESCE(FTBFS_bullseye,0) AS FTBFS_bullseye,
+ COALESCE(FTBFS_bookworm,0) AS FTBFS_bookworm,
COALESCE(FTBFS_unstable,0) AS FTBFS_unstable,
COALESCE(FTBFS_experimental,0) AS FTBFS_experimental,
COALESCE(other_stretch,0) AS other_stretch,
COALESCE(other_buster,0) AS other_buster,
COALESCE(other_bullseye,0) AS other_bullseye,
+ COALESCE(other_bookworm,0) AS other_bookworm,
COALESCE(other_unstable,0) AS other_unstable,
COALESCE(other_experimental,0) AS other_experimental
FROM (SELECT s.datum,
COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA),0) AS reproducible_stretch,
COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA),0) AS reproducible_buster,
COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='bullseye' $WHERE_EXTRA),0) AS reproducible_bullseye,
+ COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='bookworm' $WHERE_EXTRA),0) AS reproducible_bookworm,
COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA),0) AS reproducible_unstable,
COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA),0) AS reproducible_experimental,
(SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS FTBR_stretch,
(SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS FTBR_buster,
(SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='bullseye' $WHERE_EXTRA) AS FTBR_bullseye,
+ (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='bookworm' $WHERE_EXTRA) AS FTBR_bookworm,
(SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS FTBR_unstable,
(SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA) AS FTBR_experimental,
(SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS FTBFS_stretch,
(SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS FTBFS_buster,
(SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='bullseye' $WHERE_EXTRA) AS FTBFS_bullseye,
+ (SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='bookworm' $WHERE_EXTRA) AS FTBFS_bookworm,
(SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS FTBFS_unstable,
(SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA) AS FTBFS_experimental,
(SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS other_stretch,
(SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS other_buster,
(SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='bullseye' $WHERE_EXTRA) AS other_bullseye,
+ (SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='bookworm' $WHERE_EXTRA) AS other_bookworm,
(SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS other_unstable,
(SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA) AS other_experimental
FROM stats_builds_per_day AS s $WHERE2_EXTRA GROUP BY s.datum) as stats
@@ -878,8 +886,9 @@ create_debian_png_from_table() {
stretch) COLORS=40 ;;
buster) COLORS=41 ;;
bullseye) COLORS=42 ;;
- unstable) COLORS=43 ;;
- experimental) COLORS=44 ;;
+ bullseye) COLORS=43 ;;
+ unstable) COLORS=44 ;;
+ experimental) COLORS=45 ;;
esac
fi
local WIDTH=1920
@@ -905,104 +914,6 @@ create_debian_png_from_table() {
rm ${TABLE[$1]}.csv
}
-#
-# create the png (and query the db to populate a csv file...) for Arch Linux
-#
-create_archlinux_png_from_table() {
- echo "Checking whether to update $2..."
- # $1 = id of the stats table
- # $2 = image file name
- echo "${FIELDS[$1]}" > ${TABLE[$1]}.csv
- # prepare query
- WHERE_EXTRA="WHERE suite = '$SUITE'"
- if [ $1 -eq 0 ] || [ $1 -eq 2 ] ; then
- # TABLE[0+2] have a architecture column:
- WHERE_EXTRA="$WHERE_EXTRA AND architecture = '$ARCH'"
- fi
- # run query
- if [ $1 -eq 1 ] ; then
- # not sure if it's worth to generate the following query...
- WHERE_EXTRA="AND architecture='$ARCH'"
-
- # This query became much more obnoxious when gaining
- # compatibility with postgres
- query_to_csv "SELECT stats.datum,
- COALESCE(reproducible_stretch,0) AS reproducible_stretch,
- COALESCE(reproducible_buster,0) AS reproducible_buster,
- COALESCE(reproducible_unstable,0) AS reproducible_unstable,
- COALESCE(reproducible_experimental,0) AS reproducible_experimental,
- COALESCE(FTBR_stretch,0) AS FTBR_stretch,
- COALESCE(FTBR_buster,0) AS FTBR_buster,
- COALESCE(FTBR_unstable,0) AS FTBR_unstable,
- COALESCE(FTBR_experimental,0) AS FTBR_experimental,
- COALESCE(FTBFS_stretch,0) AS FTBFS_stretch,
- COALESCE(FTBFS_buster,0) AS FTBFS_buster,
- COALESCE(FTBFS_unstable,0) AS FTBFS_unstable,
- COALESCE(FTBFS_experimental,0) AS FTBFS_experimental,
- COALESCE(other_stretch,0) AS other_stretch,
- COALESCE(other_buster,0) AS other_buster,
- COALESCE(other_unstable,0) AS other_unstable,
- COALESCE(other_experimental,0) AS other_experimental
- FROM (SELECT s.datum,
- COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA),0) AS reproducible_stretch,
- COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA),0) AS reproducible_buster,
- COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA),0) AS reproducible_unstable,
- COALESCE((SELECT e.reproducible FROM stats_builds_per_day AS e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA),0) AS reproducible_experimental,
- (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS FTBR_stretch,
- (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS FTBR_buster,
- (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS FTBR_unstable,
- (SELECT e.FTBR FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA) AS FTBR_experimental,
- (SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS FTBFS_stretch,
- (SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS FTBFS_buster,
- (SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS FTBFS_unstable,
- (SELECT e.FTBFS FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA) AS FTBFS_experimental,
- (SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='stretch' $WHERE_EXTRA) AS other_stretch,
- (SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='buster' $WHERE_EXTRA) AS other_buster,
- (SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='unstable' $WHERE_EXTRA) AS other_unstable,
- (SELECT e.other FROM stats_builds_per_day e WHERE s.datum=e.datum AND suite='experimental' $WHERE_EXTRA) AS other_experimental
- FROM stats_builds_per_day AS s GROUP BY s.datum) as stats
- ORDER BY datum" >> ${TABLE[$1]}.csv
- elif [ $1 -eq 2 ] ; then
- # just make a graph of the oldest reproducible build (ignore FTBFS and FTBR)
- query_to_csv "SELECT datum, oldest_reproducible FROM ${TABLE[$1]} ${WHERE_EXTRA} ORDER BY datum" >> ${TABLE[$1]}.csv
- else
- query_to_csv "SELECT ${FIELDS[$1]} from ${TABLE[$1]} ${WHERE_EXTRA} ORDER BY datum" >> ${TABLE[$1]}.csv
- fi
- # this is a gross hack: normally we take the number of colors a table should have...
- # for the builds_age table we only want one color, but different ones, so this hack:
- COLORS=${COLOR[$1]}
- if [ $1 -eq 2 ] ; then
- case "$SUITE" in
- stretch) COLORS=40 ;;
- buster) COLORS=41 ;;
- unstable) COLORS=42 ;;
- experimental) COLORS=43 ;;
- esac
- fi
- local WIDTH=1920
- local HEIGHT=960
- # only generate graph if the query returned data
- if [ $(cat ${TABLE[$1]}.csv | wc -l) -gt 1 ] ; then
- echo "Updating $2..."
- DIR=$(dirname $2)
- mkdir -p $DIR
- echo "Generating $2."
- /srv/jenkins/bin/make_graph.py ${TABLE[$1]}.csv $2 ${COLORS} "${MAINLABEL[$1]}" "${YLABEL[$1]}" $WIDTH $HEIGHT
- mv $2 $ARCHBASE/$DIR
- [ "$DIR" = "." ] || rmdir $(dirname $2)
- # create empty dummy png if there havent been any results ever
- elif [ ! -f $ARCHBASE/$DIR/$(basename $2) ] ; then
- DIR=$(dirname $2)
- mkdir -p $DIR
- echo "Creating $2 dummy."
- convert -size 1920x960 xc:#aaaaaa -depth 8 $2
- mv $2 $ARCHBASE/$DIR
- [ "$DIR" = "." ] || rmdir $(dirname $2)
- fi
- rm ${TABLE[$1]}.csv
-}
-
-
find_in_buildlogs() {
egrep -q "$1" $ARCHLINUX_PKG_PATH/build1.log $ARCHLINUX_PKG_PATH/build2.log 2>/dev/null
}
=====================================
bin/reproducible_html_dashboard.sh
=====================================
@@ -1,7 +1,7 @@
#!/bin/bash
# vim: set noexpandtab:
-# Copyright 2014-2020 Holger Levsen <holger at layer-acht.org>
+# Copyright 2014-2021 Holger Levsen <holger at layer-acht.org>
# © 2015 Mattia Rizzolo <mattia at mapreri.org>
# released under the GPLv2
@@ -337,12 +337,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 bullseye / unstable / experimental</td>"
+ write_page "</tr><tr><td class=\"left\">oldest build result in bookworm / unstable / experimental</td>"
for ARCH in ${ARCHS} ; do
- AGE_BULLSEYE=$(query_db "SELECT CAST(greatest(max(oldest_reproducible), max(oldest_FTBR), max(oldest_FTBFS)) AS INTEGER) FROM ${TABLE[2]} WHERE suite='bullseye' AND architecture='$ARCH' AND datum='$DATE'")
+ 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_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_BULLSEYE / $AGE_UNSTABLE / $AGE_EXPERIMENTAL days</td>"
+ write_page "<td>$AGE_BOOKWORM / $AGE_UNSTABLE / $AGE_EXPERIMENTAL days</td>"
done
write_page "</tr><tr><td class=\"left\">Build jobs configured</td>"
for ARCH in ${ARCHS} ; do
@@ -539,11 +539,11 @@ 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 bullseye unstable experimental # this is a bit suboptimal
+ write_suite_arch_table bookworm unstable experimental # this is a bit suboptimal
# write suite graphs
for ARCH in ${ARCHS} ; do
for SUITE in $SUITES ; do
- if [ "$SUITE" = "stretch" ] || [ "$SUITE" = "buster" ] ; then
+ if [ "$SUITE" = "stretch" ] || [ "$SUITE" = "buster" ] || [ "$SUITE" = "bullseye" ] ; then
continue
fi
write_page " <a href=\"/debian/$SUITE/$ARCH\"><img src=\"/debian/$SUITE/$ARCH/${TABLE[0]}.png\" class=\"tripleview\" alt=\"$SUITE/$ARCH stats\"></a>"
@@ -571,10 +571,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 bullseye with issues but without identified ones</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_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 bullseye which need to be fixed</td><td></td>"
+ local TD_PKG_TESTING_ISSUES="<tr><td class=\"left\">packages in bookworm which need to be fixed</td><td></td>"
for ARCH in ${ARCHS} ; do
SUITE="unstable"
gather_suite_arch_stats
@@ -587,7 +587,7 @@ create_dashboard_page() {
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 / $(echo "scale=1 ; ($RESULT*100/$COUNT_TOTAL)" | bc)%</td>"
# define next stable release here:
- SUITE="bullseye"
+ SUITE="bookworm"
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")
@@ -631,7 +631,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 'stretch' and 'buster'</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 the old suites 'stretch', 'buster' and 'bullseye'</a> are also available."
write_page "</p>"
# the end
write_page_footer
@@ -648,7 +648,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 buster stretch ; do
+ for SUITE in bullseye buster stretch ; 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>"
@@ -730,7 +730,7 @@ create_performance_page() {
write_page "</p><p style=\"clear:both;\">"
for ARCH in ${ARCHS} ; do
for SUITE in $SUITES ; do
- if [ $SUITE = "stretch" ] || [ $SUITE = "buster" ] ; then
+ if [ $SUITE = "stretch" ] || [ $SUITE = "buster" ] || [ "$SUITE" = "bullseye" ] ; then
continue
fi
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>"
@@ -777,8 +777,8 @@ for ARCH in ${ARCHS} ; do
for SUITE in $SUITES ; do
update_suite_arch_stats
gather_suite_arch_stats
- # stretch and buster pages are only updated every 12h
- if ( [ "$SUITE" = "stretch" ] || [ "$SUITE" = "buster" ] ) && [[ $(($(date +%k) % 12)) -ne 0 ]]; then
+ # stretch, buster and bullseye pages are only updated every 12h
+ if ( [ "$SUITE" = "stretch" ] || [ "$SUITE" = "buster" ] || [ "$SUITE" = "bullseye" ] ) && [[ $(($(date +%k) % 12)) -ne 0 ]]; then
continue
fi
create_suite_arch_stats_page
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/compare/29c258389404a9e435ff8d8212e0cf855bd935a3...9229cfe2b0fe9a89fbb58443ffc729f3abc91930
--
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/-/compare/29c258389404a9e435ff8d8212e0cf855bd935a3...9229cfe2b0fe9a89fbb58443ffc729f3abc91930
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/20210817/a63ff2bf/attachment-0001.htm>
More information about the Qa-jenkins-scm
mailing list