[[!meta title="Preparing Test Builds"]] This page describes performing test builds to run on Painless Security's test infrastructure. Log into moonbuild (10.1.10.11) and check out a tree. Below we check out a writable tree, because you'll probably end up making some changes: ssh -A @10.1.10.11 git clone @moonshot.suchdamage.org:/srv/git/moonshot.git this will leave you on the master branch of the [[Moonshot repository|branches]]. However, to build Debian test packages, you want to be on the debian branch. So: cd moonshot git checkout debian git submodule update --init Now, merge in the changes you want to test. Let's say that you're updating moonshotUI and that your changes are already on master. cd ui git pull origin master Now we'll need to update the debian version number so we can do a fresh build: dch -i This will pull up an editor. Describe the change. You will be modifying debian/changelog. We will not commit this file because we're just generating test packages. You probably want to run: autoreconf -f -i To regenerate configure scripts. Change back to the root of your checkout of the master repository. Now, we want to disable stripping and optimization for our builds: export DEB_BUILD_OPTIONS="noopt nostrip" Now would be a good time to remove the "debian_build" directory if it has contents from a previous build. And run the builds ./debian-builder -s -c -s wheezy-i386 -s --arch=i386 -s -A The "-s" option gets repeated a lot because it passes the following option to sbuild, the Debian package build infrastructure. That will run an i386 (32-bit) build of the software using the wheezy-i386 (Debian 7.0) chroot (filesystem image). For directories include the directory of the software you're wishing to build. The build summary will have a status of "successful" if the build is successful. Most failures result in a status of "attempted". The output packages will be placed in the debian_build directory. Copy these to any test machines you like. You might like a loop something like for ip in 21 22 23 90; do rsync -e ssh -P -a debian_build root@10.1.10.$ip:/tmp done That will copy the debian_build directory to the listed machines. Log into these machines and run cd /tmp/debian_build dpkg -i packages_you_want_to_install If dependencies are not installed try running "aptitude install" to fix. Make sure it doesn't "fix" things by removing the package you just installed. # Trying aAgain when Tests fail You can run git reset --hard In the submodule checkout to throw away your changes if you need to re-merge in some new fixes. After this, run git merge again in the submodule and proceed from that point in the instructions.