diff options
-rwxr-xr-x | bin/d-i_overview.sh | 42 | ||||
-rwxr-xr-x | bin/d-i_parse_logs.sh | 38 | ||||
-rw-r--r-- | job-cfg/d-i-overview.yaml.py | 75 | ||||
-rw-r--r-- | job-cfg/d-i.yaml | 22 |
4 files changed, 117 insertions, 60 deletions
diff --git a/bin/d-i_overview.sh b/bin/d-i_overview.sh new file mode 100755 index 00000000..2c1fc35f --- /dev/null +++ b/bin/d-i_overview.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Copyright 2014 Holger Levsen <holger@layer-acht.org> +# released under the GPLv=2 + +DEBUG=false +. /srv/jenkins/bin/common-functions.sh +common_init "$@" + +# convert param to variables +if [ "$1" == "" ] ; then + echo "need an Archicture to act on" + exit 1 +fi +ARCH=$1 +URL=http://d-i.debian.org/daily-images/daily-build-overview.html + +TMPFILE=$(mktemp) +MISSING=$(mktemp) +FAILED=$(mktemp) +CLEAN=true + +curl -s -S $URL -o $TMPFILE +echo "Checking $URL for build issues on $ARCH." + +# http://anonscm.debian.org/viewvc/d-i/trunk/scripts/daily-build-overview?view=markup is used to generate the HTML +awk '/ul id="missingarchs/,/<\/ul>/' $TMPFILE > $MISSING +awk '/ul id="failedarchs/,/<\/ul>/' $TMPFILE > $FAILED +if grep -q "<li><a href=\"#$ARCH\"" $MISSING ; then + echo "Warning: Build for $ARCH is missing!" + CLEAN=false +fi +if grep -q "<li><a href=\"#$ARCH\"" $FAILED ; then + echo "Failure: Build for $ARCH failed!" + exit 1 +fi +if $CLEAN ; then + echo "None found." +fi +echo + +rm $TMPFILE $FAILED $MISSING diff --git a/bin/d-i_parse_logs.sh b/bin/d-i_parse_logs.sh deleted file mode 100755 index 074c7f39..00000000 --- a/bin/d-i_parse_logs.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Copyright 2012-2014 Holger Levsen <holger@layer-acht.org> -# released under the GPLv=2 - -DEBUG=false -. /srv/jenkins/bin/common-functions.sh -common_init "$@" - -# convert param to variables -if [ "$1" == "" ] ; then - echo "need at least one URL to act on" - echo '# $1 = URL' - exit 1 -fi -URL=$1 - -TMPFILE=$(mktemp) -curl $URL > $TMPFILE -if [ $(grep -c failed $TMPFILE 2>/dev/null ) -gt 1 ] ; then - figlet Warning: - figlet failed builds: - for FILE in $(grep failed $TMPFILE | awk '{print $2}' FS=href= | cut -d '"' -f2) ; do - echo Warning: $FILE failed - done -elif [ $(grep buildd $TMPFILE 2>/dev/null|grep -v "$(date +'%b %d')"|grep -v "$(date --date yesterday +'%b %d')"|grep -v "See also"|wc -l ) -gt 0 ] ; then - echo "Warning: outdated builds:" - figlet outdated builds - grep buildd $TMPFILE 2>/dev/null|grep -v "$(date +'%b %d')"| grep -v "$(date --date yesterday +'%b %d')" |grep -v "See also" -else - figlet ok -fi -echo -echo Check $1 yourself -echo - -sed -i -s 's#<img src="#<img src="http://d-i.debian.org/daily-images/#g' $TMPFILE -mv $TMPFILE $(basename $URL) diff --git a/job-cfg/d-i-overview.yaml.py b/job-cfg/d-i-overview.yaml.py new file mode 100644 index 00000000..e9b0b715 --- /dev/null +++ b/job-cfg/d-i-overview.yaml.py @@ -0,0 +1,75 @@ +#!/usr/bin/python + +archs = """ + amd64 + arm64 + armel + armhf + hurd-i386 + i386 + kfreebsd-amd64 + kfreebsd-i386 + mips + mipsel + powerpc + ppc64el + s390x + sparc + """.split() + +print(""" +- defaults: + name: d-i + project-type: freestyle + logrotate: + daysToKeep: 90 + numToKeep: 30 + artifactDaysToKeep: -1 + artifactNumToKeep: -1 + properties: + - sidebar: + url: https://jenkins.debian.net/userContent/about.html + text: About jenkins.debian.net + icon: /userContent/images/debian-swirl-24x24.png + - sidebar: + url: https://jenkins.debian.net/view/d-i_misc/ + text: Misc debian-installer jobs + icon: /userContent/images/debian-jenkins-24x24.png + - sidebar: + url: http://www.profitbricks.com + text: Sponsored by Profitbricks + icon: /userContent/images/profitbricks-24x24.png +""") + +for arch in sorted(archs): + print("""- job-template: + defaults: d-i + name: '{name}_overview_%(arch)s' + description: 'Parses d-i build overview for problems on %(arch)s from <code>http://d-i.debian.org/daily-images/daily-build-overview.html</code> daily. {do_not_edit}' + builders: + - shell: '/srv/jenkins/bin/d-i_overview.sh %(arch)s' + triggers: + - timed: "0 */6 * * *" + publishers: + - logparser: + parse-rules: '/srv/jenkins/logparse/debian-installer.rules' + unstable-on-warning: 'true' + fail-on-error: 'true' + - email: + recipients: holger@layer-acht.org + notify-every-unstable-build: false +# recipients: jenkins+debian-boot holger@layer-acht.org +""" % dict(arch=arch)) + +print(""" +- project: + name: d-i + do_not_edit: '<br><br>Job configuration source is <a href="http://anonscm.debian.org/cgit/qa/jenkins.debian.net.git/job-cfg/d-i-overview.yaml.py">d-i-overview.yaml.py</a>.' + jobs:""") +for arch in sorted(archs): + print(""" - '{name}_overview_%(arch)s'""" + % dict(arch=arch)) + + + + diff --git a/job-cfg/d-i.yaml b/job-cfg/d-i.yaml index 1f2c19ac..ade704bb 100644 --- a/job-cfg/d-i.yaml +++ b/job-cfg/d-i.yaml @@ -311,27 +311,6 @@ - job-template: defaults: d-i - name: '{name}_parse_build_logs' - description: 'Parses d-i build logs from <code>http://d-i.debian.org/daily-images/build-logs.html</code> daily. {do_not_edit}' - builders: - - shell: '/srv/jenkins/bin/d-i_parse_logs.sh http://d-i.debian.org/daily-images/build-logs.html' - triggers: - - timed: "0 5 * * *" - publishers: - - logparser: - parse-rules: '/srv/jenkins/logparse/debian-installer.rules' - unstable-on-warning: 'true' - fail-on-error: 'true' - - email: - recipients: jenkins+debian-boot holger@layer-acht.org - - htmlpublisher: - name: 'Daily d-i build logs' - directory: '.' - indexfiles: 'build-logs.html' - keepall: True - -- job-template: - defaults: d-i name: '{name}_check_jenkins_jobs' description: 'Checks daily for missing jenkins jobs. {do_not_edit}' builders: @@ -836,7 +815,6 @@ do_not_edit: '<br><br>Job configuration source is <a href="http://anonscm.debian.org/cgit/qa/jenkins.debian.net.git/job-cfg/d-i.yaml">d-i.yaml</a>.' jobs: - '{name}_housekeeping' - - '{name}_parse_build_logs' - '{name}_check_jenkins_jobs' - '{name}_manual': include: '/trunk/manual/debian/.* |