Updates for release process
[devwiki.git] / release / test.mdwn
1 [[!meta title="Preparing Test Builds"]]
2
3 This page describes performing test builds to run on Painless
4 Security's test infrastructure.
5
6 Log into moonbuild (10.1.10.10) and check out a tree.  Below we check out a writable tree, because you'll probably end up making some changes:
7
8     ssh -A username@10.1.10.10
9     git clone username@moonshot.suchdamage.org:/srv/git/moonshot.git
10
11 this will leave you on the master branch of the [[Moonshot repository|branches]].
12 However, to build Debian test packages, you want to be  on the debian branch. So:
13
14     git checkout debian
15     git submodule update --init
16
17 Now, merge in the changes you want to test.
18 Let's say that you're updating moonshot itself and that your changes are already on master.
19
20     cd moonshot
21     git merge origin/master
22
23 Now we'll need to update the debian version number so we can do a fresh build:
24
25     dch -i
26
27 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.
28
29 Change back to the root of your checkout of the master repository.
30
31 Now, we want to disable stripping and optimization for our builds:
32
33     export DEB_BUILD_OPTIONS="noopt nostrip"
34
35 Now would be a good time to remove the "debian_build" directory if it has contents from a previous build.
36
37 And run the builds
38
39     ./debian-builder -s -c -s wheezy-i386 -s --arch=i386 -s -A directories
40 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.
41
42 The output packages will be placed in the debian_build directory.
43
44 Copy these to any test machines you like.  You might like a loop something like
45
46     for ip in 21 22 23 90; do
47         rsync -e ssh -a debian_build root@10.1.10.$ip:/tmp
48         done
49
50 That will copy the debian_build directory to the listed machines.  Log into these machines and run
51
52     cd /tmp/debian_build
53     dpkg -i packages_you_want_to_install
54
55 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.
56
57 You can run
58
59     git reset --hard
60
61 In the submodule checkout to throw awy your changes if you need to re-merge in some new fixes.