summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Levsen <holger@layer-acht.org>2012-10-20 13:05:54 +0200
committerHolger Levsen <holger@layer-acht.org>2012-10-20 13:05:54 +0200
commit19a1f850bfb586d9ac9718f80ea1bc2bd8941b3e (patch)
tree4ab329f92065c4a60c913fd5f7d047d5c29fac75
downloadjenkins.debian.net-19a1f850bfb586d9ac9718f80ea1bc2bd8941b3e.tar.xz
initial version of chroot_tester and TODO file
-rw-r--r--TODO67
-rwxr-xr-xbin/chroot_tester.sh138
-rwxr-xr-xbin/housekeeping.sh21
3 files changed, 226 insertions, 0 deletions
diff --git a/TODO b/TODO
new file mode 100644
index 00000000..0b80374b
--- /dev/null
+++ b/TODO
@@ -0,0 +1,67 @@
+TODO
+----
+
+== About jenkins.debian.net
+
+* This is pretty much work in progress, (hopefully) doing something useful since October 15th 2012
+* Join #debian-qa on irc.debian.org to report bugs or give other feedback!
+* git clone git://git.debian.org/git/users/holger/jenkins.debian.net.git
+
+== general todo
+
+- add copyright notes
+- firewall host
+- switch to /srv/jenkins to be fetch from git
+- mv "welcome to jenkins.d.n"-intro text to "about jenkins.d.n" in navigation (and use the html rendered version of this very file (in asciidoc syntax))
+- use mirror.1und1.d
+- mail notifications (to where?)
+- proper backup (=daily)
+- moar tests (see below)
+- use https://github.com/openstack-ci/jenkins-job-builder to create _all_ job configurations (if possible, else mix with job-dsl-plugin or https://github.com/JoelJ/Templating.git
+- proper git repo, outside ~holger
+
+
+=== minor stuff
+
+- squid, cache files bigger than 20MB? (maximum_object_size in squid.conf)
+- only trigger^wreally run jobs if available+used packages have changed (save packages in db and compare)
+- install desktop-base, plymouth?
+
+== more tests:
+
+=== test images:
+
+<h01ger> and i plan to test (at first) weekly images of amd64 std,kde,lxde+xfce weekly and the first sid daily daily. anything obvious+useful i miss?
+<h01ger> .oO( "other archs" )
+
+- use jigdo:
+
+http://cdimage.debian.org/cdimage/weekly-builds/amd64/jigdo-cd/
+http://cdimage.debian.org/cdimage/daily-builds/sid_d-i/20121020-1/amd64/
+
+- start client VMs using the profitbricks API: https://www.profitbricks.com/us/media/docs/PB_PublicAPI_EN.pdf (and dhcp)
+
+=== test tasks:
+
+<h01ger> how do i install a task outside d-i?
+<h01ger> what interesting tasks are there?
+<jcristau> tasksel install <task>
+<daemonkeeper> h01ger: http://packages.debian.org/source/sid/tasksel
+
+
+== to document properly
+
+#missing: how jenkins was installed
+apt-get install mtr-tiny dstat
+apt-get install debootstrap sudo figlet graphviz apache2 python-yaml python-setuptools
+apt-get install build-essential devscripts && apt-get build-dep python-jenkinsapi
+a2enmod proxy
+a2enmod proxy_http
+
+== to backup
+- backup: /etc /srv/jenkins /var/lib/jenkins/job/*/config.xml /var/lib/jenkins/userContent/
+- mkdir /chroots ; chown jenkins.jenkins /chroots
+- /etc/sudoers.d/jenkins
+- /etc/squid/squid.conf
+- /etc/apt/apt.conf.d/80proxy
+- /etc/apache2/sites-enabled/000-default
diff --git a/bin/chroot_tester.sh b/bin/chroot_tester.sh
new file mode 100755
index 00000000..dae4cacc
--- /dev/null
+++ b/bin/chroot_tester.sh
@@ -0,0 +1,138 @@
+#!/bin/bash
+
+# Copyright 2012 Holger Levsen <holger@layer-acht.org>
+# released under the GPLv=2
+
+# $1 = base distro
+# $2 = extra component
+# $3 = upgrade distro
+
+if [ "$1" == "" ] ; then
+ echo "need at least one distribution to act on"
+ echo '# $1 = base distro'
+ echo '# $2 = extra component (gnome, kde, xfce, lxce)'
+ echo '# $3 = upgrade distro'
+ exit 1
+fi
+
+SLEEP=$(shuf -i 1-10 -n 1)
+echo "Sleeping $SLEEP seconds to randomize start times and parallel runs."
+sleep $SLEEP
+
+set -x
+set -e
+export LANG=C
+export MIRROR=http://ftp.de.debian.org/debian
+export http_proxy="http://localhost:3128"
+
+export SCRIPT_HEADER="#!/bin/bash
+set -x
+set -e
+export DEBIAN_FRONTEND=noninteractive
+export LANG=C
+export http_proxy=$http_proxy"
+
+export CHROOT_TARGET=$(mktemp -d -p /chroots/ $1.XXXXXXXXX)
+export TMPFILE=$(mktemp -u)
+export CTMPFILE=$CHROOT_TARGET/$TMPFILE
+
+cleanup_all() {
+ # FIXME: test if it starts with /chroots/
+ if [ "$CHROOT_TARGET" = "" ] ; then
+ echo "HALP. CHROOT_TARGET = $CHROOT_TARGET"
+ exit 1
+ fi
+ sudo umount -l $CHROOT_TARGET/proc || true
+ sudo umount -l $CHROOT_TARGET/run/lock || true
+ sudo umount -l $CHROOT_TARGET/run/shm || true
+ sudo umount -l $CHROOT_TARGET/run || true
+ sudo rm -rf $CHROOT_TARGET
+}
+
+execute_ctmpfile() {
+ chmod +x $CTMPFILE
+ sudo chroot $CHROOT_TARGET $TMPFILE
+ rm $CTMPFILE
+}
+
+prepare_bootstrap() {
+cat >> $CTMPFILE <<-EOF
+$SCRIPT_HEADER
+mount /proc -t proc /proc
+echo -e '#!/bin/sh\nexit 101' > /usr/sbin/policy-rc.d
+chmod +x /usr/sbin/policy-rc.d
+EOF
+}
+
+prepare_install_packages() {
+cat >> $CTMPFILE <<-EOF
+$SCRIPT_HEADER
+apt-get update
+apt-get -y install $1
+EOF
+}
+
+prepare_upgrade2() {
+cat >> $CTMPFILE <<-EOF
+echo "deb $MIRROR $1 main contrib non-free" > /etc/apt/sources.list
+$SCRIPT_HEADER
+apt-get update
+#apt-get -y install apt
+apt-get -y upgrade
+apt-get -y dist-upgrade
+apt-get -y dist-upgrade
+apt-get -y autoremove
+EOF
+}
+
+bootstrap() {
+ echo "Bootstraping $1 into $CHROOT_TARGET now."
+ sudo debootstrap $1 $CHROOT_TARGET $MIRROR
+ prepare_bootstrap
+ execute_ctmpfile
+}
+
+install_packages() {
+ echo "Installing extra packages for $1 now."
+ prepare_install_packages $2
+ execute_ctmpfile
+}
+
+upgrade2() {
+ echo "Upgrading to $1 now."
+ prepare_upgrade2 $1
+ execute_ctmpfile
+}
+
+trap cleanup_all INT TERM EXIT
+
+case $1 in
+ squeeze)bootstrap squeeze;;
+ wheezy) bootstrap wheezy;;
+ sid) bootstrap sid;;
+ *) echo "unsupported distro." ; exit 1 ;;
+esac
+
+if [ "$2" != "" ] ; then
+ case $2 in
+ none) ;;
+ gnome) install_packages gnome gnome ;;
+ kde) install_packages kde kde-plasma-desktop ;;
+ xfce) install_packages xfce xfce4 ;;
+ lxde) install_packages lxde lxde ;;
+ *) echo "unsupported component." ; exit 1 ;;
+ esac
+fi
+
+if [ "$3" != "" ] ; then
+ case $3 in
+ squeeze)upgrade2 squeeze;;
+ wheezy) upgrade2 wheezy;;
+ sid) upgrade2 sid;;
+ *) echo "unsupported distro." ; exit 1 ;;
+ esac
+fi
+
+cleanup_all
+trap - INT TERM EXIT
+
diff --git a/bin/housekeeping.sh b/bin/housekeeping.sh
new file mode 100755
index 00000000..e8655e21
--- /dev/null
+++ b/bin/housekeeping.sh
@@ -0,0 +1,21 @@
+#/bin/bash
+
+echo
+uptime
+echo
+df -h
+echo
+
+HOUSE=$(ls /chroots/)
+if [ "$HOUSE" != "" ] ; then
+ figlet "Warning:"
+ echo
+ echo "Probably manual cleanup needed:"
+ echo
+ echo "$ ls -la /chroots/"
+ ls -la /chroots/
+ exit 1
+fi
+
+echo "No problems found, all seems good."
+figlet "Ok."