[Qa-jenkins-scm] [Git][qa/jenkins.debian.net][master] reproducible alpine: add alpine website
Holger Levsen
gitlab at salsa.debian.org
Sat Jun 8 17:33:26 BST 2019
Holger Levsen pushed to branch master at Debian QA / jenkins.debian.net
Commits:
ff75924c by kpcyrd at 2019-06-08T16:32:59Z
reproducible alpine: add alpine website
Signed-off-by: Holger Levsen <holger at layer-acht.org>
- - - - -
3 changed files:
- + bin/reproducible_html_alpine.sh
- job-cfg/reproducible.yaml
- + userContent/reproducible/alpine/global.css
Changes:
=====================================
bin/reproducible_html_alpine.sh
=====================================
@@ -0,0 +1,493 @@
+#!/bin/bash
+
+# Copyright 2014-2019 Holger Levsen <holger at layer-acht.org>
+# 2015 anthraxx <levente at leventepolyak.net>
+# 2019 kpcyrd <git at rxv.cc>
+# released under the GPLv=2
+
+DEBUG=false
+. /srv/jenkins/bin/common-functions.sh
+common_init "$@"
+
+# common code
+. /srv/jenkins/bin/reproducible_common.sh
+
+#
+#
+# reproducible_html_alpine.sh can be called in two ways:
+# - without params, then it will build all the index and dashboard pages
+# - with exactly two params, $REPOSITORY and $SRCPACKAGE, in which case that packages html page will be created
+#
+
+
+#
+# helper functions
+#
+get_state_from_counter() {
+ local counter=$1
+ case $counter in
+ 0) STATE=GOOD ;;
+ 1) STATE=FTBR ;;
+ 2) STATE=FTBFS ;;
+ 3) STATE=DEPWAIT ;;
+ 4) STATE=404 ;;
+ 5) STATE=BLACKLISTED ;;
+ 6) STATE=UNKNOWN ;;
+ esac
+}
+
+
+include_pkg_html_in_page(){
+ cat $ALPINE_BASE/$REPOSITORY/$SRCPACKAGE/pkg.html >> $PAGE 2>/dev/null || true
+}
+
+include_pkg_table_header_in_page(){
+ write_page " <table><tr><th>repository</th><th>source package</th><th>version</th><th>test result</th><th>test date<br />test duration</th><th>1st build log<br />2nd build log</th></tr>"
+}
+
+repostats(){
+ #
+ # gather data
+ # write csv file for $REPOSITORY
+ # write $HTML_REPOSTATS
+ #
+ for REPOSITORY in $ALPINE_REPOS ; do
+ echo "$(date -u) - starting to analyse build results for '$REPOSITORY'."
+ # prepare stats per repository
+ SUITE="alpine_$REPOSITORY"
+ TOTAL=$(query_db "SELECT count(*) FROM sources AS s WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE';")
+ TESTED=$(query_db "SELECT count(*) FROM sources AS s JOIN results AS r ON s.id=r.package_id WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE';")
+ NR_GOOD=$(query_db "SELECT count(*) FROM sources AS s JOIN results AS r ON s.id=r.package_id WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE' AND r.status='GOOD';")
+ NR_FTBR=$(query_db "SELECT count(*) FROM sources AS s JOIN results AS r ON s.id=r.package_id WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE' AND r.status LIKE 'FTBR_%';")
+ NR_FTBFS=$(query_db "SELECT count(*) FROM sources AS s JOIN results AS r ON s.id=r.package_id WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE' AND r.status LIKE 'FTBFS_%';")
+ NR_DEPWAIT=$(query_db "SELECT count(*) FROM sources AS s JOIN results AS r ON s.id=r.package_id WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE' AND r.status LIKE 'DEPWAIT_%';")
+ NR_404=$(query_db "SELECT count(*) FROM sources AS s JOIN results AS r ON s.id=r.package_id WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE' AND r.status LIKE '404_%';")
+ NR_BLACKLISTED=$(query_db "SELECT count(*) FROM sources AS s JOIN results AS r ON s.id=r.package_id WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE' AND r.status='BLACKLISTED';")
+ NR_UNKNOWN=$(query_db "SELECT count(*) FROM sources AS s JOIN results AS r ON s.id=r.package_id WHERE s.distribution=$DISTROID AND s.architecture='x86_64' AND s.suite='$SUITE' AND r.status LIKE 'UNKNOWN_%';")
+ NR_UNTESTED=$(query_db "SELECT count(s.name) FROM sources AS s WHERE s.architecture='x86_64' AND s.distribution=$DISTROID AND s.suite='$SUITE' AND s.id NOT IN (SELECT package_id FROM results)")
+ if [ $NR_UNTESTED -ne 0 ] ; then
+ let NR_UNKNOWN=$NR_UNKNOWN+$NR_UNTESTED
+ fi
+ PERCENT_TOTAL=$(echo "scale=1 ; ($TESTED*100/$TOTAL)" | bc)
+ if [ $(echo $PERCENT_TOTAL/1|bc) -lt 99 ] ; then
+ NR_TESTED="$TESTED <span style=\"font-size:0.8em;\">(tested $PERCENT_TOTAL% of $TOTAL)</span>"
+ else
+ NR_TESTED=$TESTED
+ fi
+ echo " <tr>" >> $HTML_REPOSTATS
+ echo " <td><a href='/alpine/$REPOSITORY.html'>$REPOSITORY</a></td><td><a href='/alpine/$REPOSITORY.html'>$NR_TESTED</a></td>" >> $HTML_REPOSTATS
+ counter=0
+ for i in $NR_GOOD $NR_FTBR $NR_FTBFS $NR_DEPWAIT $NR_404 $NR_BLACKLISTED $NR_UNKNOWN ; do
+ get_state_from_counter $counter
+ let counter+=1
+ PERCENT_i=$(echo "scale=1 ; ($i*100/$TESTED)" | bc)
+ if [ "$PERCENT_i" != "0" ] || [ "$i" != "0" ] ; then
+ echo " <td><a href='/alpine/state_${REPOSITORY}_$STATE.html'>$i ($PERCENT_i%)</a></td>" >> $HTML_REPOSTATS
+ else
+ echo " <td><a href='/alpine/state_${REPOSITORY}_$STATE.html'>$i</a></td>" >> $HTML_REPOSTATS
+ fi
+ done
+ echo " </tr>" >> $HTML_REPOSTATS
+ if [ ! -f $ALPINE_BASE/$REPOSITORY.csv ] ; then
+ echo '; date, reproducible, unreproducible, ftbfs, depwait, download problems, untested' > $ALPINE_BASE/$REPOSITORY.csv
+ fi
+ if ! grep -q $YESTERDAY $ALPINE_BASE/$REPOSITORY.csv ; then
+ let REAL_UNKNOWN=$TOTAL-$NR_GOOD-$NR_FTBR-$NR_FTBFS-$NR_DEPWAIT-$NR_404 || true
+ echo $YESTERDAY,$NR_GOOD,$NR_FTBR,$NR_FTBFS,$NR_DEPWAIT,$NR_404,$REAL_UNKNOWN >> $ALPINE_BASE/$REPOSITORY.csv
+ fi
+ IMAGE=$ALPINE_BASE/$REPOSITORY.png
+ if [ ! -f $IMAGE ] || [ $ALPINE_BASE/$REPOSITORY.csv -nt $IMAGE ] ; then
+ echo "Updating $IMAGE..."
+ /srv/jenkins/bin/make_graph.py $ALPINE_BASE/$REPOSITORY.csv $IMAGE 6 "Reproducibility status for alpine packages in $REPOSITORY" "Amount (total)" $WIDTH $HEIGHT
+ fi
+ #
+ # prepare ALPINE totals
+ #
+ set +e
+ let ALPINE_TOTAL+=$TOTAL
+ let ALPINE_TESTED+=$TESTED
+ let ALPINE_NR_FTBFS+=$NR_FTBFS
+ let ALPINE_NR_FTBR+=$NR_FTBR
+ let ALPINE_NR_DEPWAIT+=$NR_DEPWAIT
+ let ALPINE_NR_404+=$NR_404
+ let ALPINE_NR_GOOD+=$NR_GOOD
+ let ALPINE_NR_BLACKLISTED+=$NR_BLACKLISTED
+ let ALPINE_NR_UNKNOWN+=$NR_UNKNOWN
+ set -e
+ done
+ #
+ # prepare stats per repository
+ #
+ ALPINE_PERCENT_TOTAL=$(echo "scale=1 ; ($ALPINE_TESTED*100/$ALPINE_TOTAL)" | bc)
+ if [ $(echo $ALPINE_PERCENT_TOTAL/1|bc) -lt 99 ] ; then
+ NR_TESTED="$ALPINE_TESTED <span style=\"font-size:0.8em;\">(tested $ALPINE_PERCENT_TOTAL% of $ALPINE_TOTAL)</span>"
+ else
+ NR_TESTED=$ALPINE_TESTED
+ fi
+ echo " <tr>" >> $HTML_REPOSTATS
+ echo " <td><b>all combined</b></td><td>$NR_TESTED</td>" >> $HTML_REPOSTATS
+ counter=0
+ for i in $ALPINE_NR_GOOD $ALPINE_NR_FTBR $ALPINE_NR_FTBFS $ALPINE_NR_DEPWAIT $ALPINE_NR_404 $ALPINE_NR_BLACKLISTED $ALPINE_NR_UNKNOWN ; do
+ get_state_from_counter $counter
+ let counter+=1
+ PERCENT_i=$(echo "scale=1 ; ($i*100/$ALPINE_TESTED)" | bc)
+ if [ "$PERCENT_i" != "0" ] || [ "$i" != "0" ] ; then
+ echo " <td><a href='/alpine/state_$STATE.html'>$i ($PERCENT_i%)</a></td>" >> $HTML_REPOSTATS
+ else
+ echo " <td><a href='/alpine/state_$STATE.html'>$i</a></td>" >> $HTML_REPOSTATS
+ fi
+ done
+ echo " </tr>" >> $HTML_REPOSTATS
+ #
+ # write csv file for totals
+ #
+ if [ ! -f $ALPINE_BASE/alpine.csv ] ; then
+ echo '; date, reproducible, unreproducible, ftbfs, depwait, download problems, untested' > $ALPINE_BASE/alpine.csv
+ fi
+ if ! grep -q $YESTERDAY $ALPINE_BASE/alpine.csv ; then
+ let ALPINE_REAL_UNKNOWN=$ALPINE_TOTAL-$ALPINE_NR_GOOD-$ALPINE_NR_FTBR-$ALPINE_NR_FTBFS-$ALPINE_NR_DEPWAIT-$ALPINE_NR_404 || true
+ echo $YESTERDAY,$ALPINE_NR_GOOD,$ALPINE_NR_FTBR,$ALPINE_NR_FTBFS,$ALPINE_NR_DEPWAIT,$ALPINE_NR_404,$ALPINE_REAL_UNKNOWN >> $ALPINE_BASE/alpine.csv
+ fi
+ IMAGE=$ALPINE_BASE/alpine.png
+ if [ ! -f $IMAGE ] || [ $ALPINE_BASE/alpine.csv -nt $IMAGE ] ; then
+ echo "Updating $IMAGE..."
+ /srv/jenkins/bin/make_graph.py $ALPINE_BASE/alpine.csv $IMAGE 6 "Reproducibility status for all tested alpine packages" "Amount (total)" $WIDTH $HEIGHT
+ irc_message alpine-reproducible "Daily graphs on $REPRODUCIBLE_URL/alpine/ updated, $(echo "scale=1 ; ($ALPINE_NR_GOOD*100/$ALPINE_TESTED)" | bc)% reproducible packages in our current test framework."
+ fi
+}
+
+alpine_page_header(){
+ echo "$(date -u) - starting to write $PAGE"
+ cat > $PAGE <<- EOF
+ <!DOCTYPE html>
+ <html lang="en-US">
+ <head>
+ <meta charset="UTF-8">
+ <title>$TITLE</title>
+ <link rel='stylesheet' href='global.css' type='text/css' media='all' />
+ </head>
+ <body>
+ <div id="archnavbar">
+ <div id="logo"></div>
+ </div>
+ <div class="content">
+ <h1><a href='/alpine/'>Reproducible alpine</a>?!</h1>
+ <div class="page-content">
+
+ EOF
+}
+
+alpine_page_footer(){
+ write_page "</div></div>"
+ write_page_footer 'alpine'
+ publish_page alpine
+}
+
+alpine_repostats_table(){
+ write_page " <table><tr><th>repository</th><th>all source packages</th>"
+ write_page " <th><a href='/alpine/state_GOOD.html'>reproducible</a></th>"
+ write_page " <th><a href='/alpine/state_FTBR.html'>unreproducible</a></th>"
+ write_page " <th><a href='/alpine/state_FTBFS.html'>failing to build</a></th>"
+ write_page " <th><a href='/alpine/state_DEPWAIT.html'>in depwait state</a></th>"
+ write_page " <th><a href='/alpine/state_404.html'>download problems</a></th>"
+ write_page " <th><a href='/alpine/state_BLACKLISTED.html'>blacklisted</a></th>"
+ write_page " <th><a href='/alpine/state_UNKNOWN.html'>unknown state</a></th></tr>"
+ cat $HTML_REPOSTATS >> $PAGE
+ write_page " </table>"
+ write_page " <p>("
+ write_page " <a href='/alpine/recent_builds.html'>recent builds</a>,"
+ write_page " <a href='/alpine/scheduled.html'>currently scheduled</a>"
+ write_page " )</p>"
+}
+
+dashboard_page(){
+ PAGE=alpine.html
+ TITLE="Reproducible alpine ?!"
+ alpine_page_header
+ write_page_intro 'alpine'
+ alpine_repostats_table
+ # include graphs
+ write_page '<p style="clear:both;">'
+ for REPOSITORY in $ALPINE_REPOS ; do
+ write_page "<a href=\"/alpine/$REPOSITORY.png\"><img src=\"/alpine/$REPOSITORY.png\" class=\"overview\" alt=\"$REPOSITORY stats\"></a>"
+ done
+ write_page '</p><p style="clear:both;"><center>'
+ write_page "<a href=\"/alpine/alpine.png\"><img src=\"/alpine/alpine.png\" alt=\"total alpine stats\"></a></p>"
+ write_variation_table 'alpine'
+ alpine_page_footer
+}
+
+repository_pages(){
+ for REPOSITORY in $ALPINE_REPOS ; do
+ PAGE=$REPOSITORY.html
+ TITLE="Reproducible alpine $REPOSITORY ?!"
+ alpine_page_header
+ alpine_repostats_table
+ SUITE="alpine_$REPOSITORY"
+ TESTED=$(query_db "SELECT count(*) FROM sources AS s
+ JOIN results AS r
+ ON s.id=r.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.suite='$SUITE';")
+ write_page "<h2>$TESTED packages in repository $REPOSITORY</h2>"
+ include_pkg_table_header_in_page
+ REPO_PKGS=$(query_db "SELECT s.name FROM sources
+ AS s JOIN results AS r
+ ON s.id=r.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.suite='$SUITE'
+ ORDER BY r.status,s.name")
+ for SRCPACKAGE in $REPO_PKGS ; do
+ include_pkg_html_in_page
+ done
+ write_page " </table>"
+ alpine_page_footer
+ done
+}
+
+state_pages(){
+ for STATE in FTBFS FTBR DEPWAIT 404 GOOD BLACKLISTED UNKNOWN ; do
+ PAGE=state_$STATE.html
+ TITLE="Reproducible alpine, packages in state $STATE"
+ alpine_page_header
+ alpine_repostats_table
+ TESTED=$(query_db "SELECT count(*) FROM sources AS s
+ JOIN results AS r
+ ON s.id=r.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND r.status LIKE '$STATE%';")
+ if [ "$STATE" = "UNKNOWN" ] ; then
+ # untested packages are also state UNKNOWN...
+ UNTESTED=$(query_db "SELECT count(s.name) FROM sources AS s
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.id NOT IN (SELECT package_id FROM results)")
+ if [ $UNTESTED -ne 0 ] ; then
+ let TESTED=$TESTED+$UNTESTED
+ fi
+ fi
+ write_page "<h2>$TESTED packages in $STATE state</h2>"
+ include_pkg_table_header_in_page
+ for REPOSITORY in $ALPINE_REPOS ; do
+ SUITE="alpine_$REPOSITORY"
+ STATE_PKGS=$(query_db "SELECT s.name FROM sources AS s
+ JOIN results AS r
+ ON s.id=r.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.suite='$SUITE'
+ AND r.status LIKE '$STATE%'
+ ORDER BY r.status,s.name")
+ for SRCPACKAGE in ${STATE_PKGS} ; do
+ include_pkg_html_in_page
+ done
+ if [ "$STATE" = "UNKNOWN" ] ; then
+ # untested packages are also state UNKNOWN...
+ STATE_PKGS=$(query_db "SELECT s.name FROM sources AS s
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.suite='$SUITE'
+ AND s.id NOT IN (SELECT package_id FROM results)
+ ORDER BY s.name")
+ for SRCPACKAGE in ${STATE_PKGS} ; do
+ include_pkg_html_in_page
+ done
+ fi
+ done
+ write_page " </table>"
+ alpine_page_footer
+ done
+}
+
+repository_state_pages(){
+ for REPOSITORY in $ALPINE_REPOS ; do
+ SUITE="alpine_$REPOSITORY"
+ for STATE in FTBFS FTBR DEPWAIT 404 GOOD BLACKLISTED UNKNOWN ; do
+ PAGE=state_${REPOSITORY}_$STATE.html
+ TITLE="Reproducible alpine, packages in $REPOSITORY in state $STATE"
+ alpine_page_header
+ alpine_repostats_table
+ TESTED=$(query_db "SELECT count(*) FROM sources AS s
+ JOIN results AS r
+ ON s.id=r.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.suite='$SUITE'
+ AND r.status LIKE '$STATE%';")
+ if [ "$STATE" = "UNKNOWN" ] ; then
+ # untested packages are also state UNKNOWN...
+ UNTESTED=$(query_db "SELECT count(s.name) FROM sources AS s
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.suite='$SUITE'
+ AND s.id NOT IN (SELECT package_id FROM results)")
+ if [ $UNTESTED -ne 0 ] ; then
+ let TESTED=$TESTED+$UNTESTED
+ fi
+ fi
+ write_page "<h2>$TESTED packages in $REPOSITORY in $STATE state</h2>"
+ include_pkg_table_header_in_page
+ STATE_PKGS=$(query_db "SELECT s.name FROM sources AS s
+ JOIN results AS r
+ ON s.id=r.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.suite='$SUITE'
+ AND r.status LIKE '$STATE%'
+ ORDER BY r.status,s.name")
+ for SRCPACKAGE in ${STATE_PKGS} ; do
+ include_pkg_html_in_page
+ done
+ if [ "$STATE" = "UNKNOWN" ] ; then
+ # untested packages are also state UNKNOWN...
+ STATE_PKGS=$(query_db "SELECT s.name FROM sources AS s
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND s.suite='$SUITE'
+ AND s.id NOT IN (SELECT package_id FROM results)
+ ORDER BY s.name")
+ for SRCPACKAGE in ${STATE_PKGS} ; do
+ include_pkg_html_in_page
+ done
+ fi
+ write_page " </table>"
+ alpine_page_footer
+ done
+ done
+}
+
+recent_builds_page(){
+ PAGE=recent_builds.html
+ TITLE="Reproducible alpine, builds in the last 24h"
+ alpine_page_header
+ alpine_repostats_table
+ MAXDATE="$(date -u +'%Y-%m-%d %H:%M' -d '24 hours ago')"
+ RECENT=$(query_db "SELECT count(s.name) FROM sources AS s
+ JOIN results AS r
+ ON s.id=r.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND r.build_date > '$MAXDATE'")
+ write_page "<h2>$RECENT builds of Archlinux packages in the last 24h</h2>"
+ include_pkg_table_header_in_page
+ STATE_PKGS=$(query_db "SELECT s.name, s.suite FROM sources AS s
+ JOIN results AS r
+ ON s.id=r.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND r.build_date > '$MAXDATE'
+ ORDER BY r.build_date
+ DESC")
+ for LINE in ${STATE_PKGS} ; do
+ SRCPACKAGE=$(echo "$LINE" | cut -d "|" -f1)
+ REPOSITORY=$(echo "$LINE" | cut -d "|" -f2 | sed 's#alpine_##')
+ include_pkg_html_in_page
+ done
+ write_page " </table>"
+ alpine_page_footer
+}
+
+currently_scheduled_page(){
+ PAGE=scheduled.html
+ TITLE="Reproducible alpine, packages currently scheduled"
+ alpine_page_header
+ alpine_repostats_table
+ TESTED=$(query_db "SELECT count(*)
+ FROM sources AS s
+ JOIN schedule AS sch
+ ON s.id=sch.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND sch.date_build_started IS NULL")
+ write_page "<h2>Currently $TESTED scheduled builds of Archlinux packages</h2>"
+ write_page " <table><tr><th>source package</th><th>repository</th><th>version</th><th>scheduled</th></tr>"
+ STATE_PKGS=$(query_db "SELECT s.name, s.suite, s.version, sch.date_scheduled
+ FROM sources AS s
+ JOIN schedule AS sch
+ ON s.id=sch.package_id
+ WHERE s.distribution=$DISTROID
+ AND s.architecture='x86_64'
+ AND sch.date_build_started IS NULL
+ ORDER BY sch.date_scheduled, s.name")
+ OIFS=$IFS
+ IFS=$'\012'
+ for LINE in ${STATE_PKGS} ; do
+ SRCPACKAGE=$(echo "$LINE" | cut -d "|" -f1)
+ REPOSITORY=$(echo "$LINE" | cut -d "|" -f2 | sed 's#alpine_##')
+ VERSION=$(echo "$LINE" | cut -d "|" -f3)
+ SCH_DATE=$(echo "$LINE" | cut -d "|" -f4-)
+ write_page " <tr><td>$SRCPACKAGE</td><td>$REPOSITORY</td><td>$VERSION</td><td>$SCH_DATE</td></tr>"
+ done
+ IFS=$OIFS
+ write_page " </table>"
+ alpine_page_footer
+}
+
+#
+# main
+#
+echo "$(date -u) - starting."
+YESTERDAY=$(date '+%Y-%m-%d' -d "-1 day")
+PAGE=""
+TITLE=""
+STATE=""
+REPOSITORY=""
+SRCPACKAGE=""
+DISTROID=$(query_db "SELECT id FROM distributions WHERE name='alpine'")
+
+if [ -z "$1" ] ; then
+ MEMBERS_FTBFS="0 1 2 3 4"
+ MEMBERS_DEPWAIT="0 1 2"
+ MEMBERS_404="0 1 2 3 4 5 6 7 8 9 A B C"
+ MEMBERS_FTBR="0 1 2"
+ HTML_REPOSTATS=$(mktemp -t alpinerb-html-XXXXXXXX)
+ ALPINE_TOTAL=0
+ ALPINE_TESTED=0
+ ALPINE_NR_FTBFS=0
+ ALPINE_NR_FTBR=0
+ ALPINE_NR_DEPWAIT=0
+ ALPINE_NR_404=0
+ ALPINE_NR_GOOD=0
+ ALPINE_NR_BLACKLISTED=0
+ ALPINE_NR_UNKNOWN=0
+ WIDTH=1920
+ HEIGHT=960
+ # variables related to the stats we update
+ # FIELDS[0]="datum, reproducible, FTBR, FTBFS, other, untested" # for this alpine still uses a .csv file...
+ FIELDS[1]="datum"
+ for i in reproducible FTBR FTBFS other ; do
+ for j in $SUITES ; do
+ FIELDS[1]="${FIELDS[1]}, ${i}_${j}"
+ done
+ done
+ FIELDS[2]="datum, oldest"
+
+ repostats
+ dashboard_page
+ currently_scheduled_page
+ recent_builds_page
+ repository_pages
+ state_pages
+ repository_state_pages
+
+ rm $HTML_REPOSTATS > /dev/null
+elif [ -z "$2" ] ; then
+ echo "$(date -u) - $0 needs two params or none, exiting."
+ # add code here to also except core, extra, multilib or community...
+ exit 1
+else
+ REPOSITORY=$1
+ SRCPACKAGE=$2
+ if [ ! -d $ALPINE_BASE/$REPOSITORY/$SRCPACKAGE ] ; then
+ echo "$(date -u) - $ALPINE_BASE/$REPOSITORY/$SRCPACKAGE does not exist, exiting."
+ exit 1
+ fi
+ HTML_BUFFER=''
+ create_pkg_html
+fi
+echo "$(date -u) - all done."
+
+# vim: set sw=0 noet :
=====================================
job-cfg/reproducible.yaml
=====================================
@@ -562,6 +562,9 @@
my_description: 'Generate https://reproducible.debian.net/userContent/reproducible.json for consumption by tracker.debian.org.'
my_timed: '1 H/2 * * *'
my_shellext: ".py"
+ - 'html_alpine':
+ my_description: 'Build webpages for alpine reproducibility tests'
+ my_timed: '15,45 * * * *'
- 'alpine_scheduler':
my_description: 'Scheduler for alpine reproducibility tests'
my_timed: '0 H/4 * * *'
=====================================
userContent/reproducible/alpine/global.css
=====================================
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/commit/ff75924c6dee2bc4bb0937b4e40d2e465582391b
--
View it on GitLab: https://salsa.debian.org/qa/jenkins.debian.net/commit/ff75924c6dee2bc4bb0937b4e40d2e465582391b
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/20190608/bf1805ad/attachment-0001.html>
More information about the Qa-jenkins-scm
mailing list