jenkins: add notes about setting up a build slave
[gnupg-doc.git] / misc / jenkins / README.org
1 * Notes
2 ** Setting up a Jenkins build slave
3  - install a jre, make, autoconf, automake, libtool, gcc, git, bison,
4    fig2dev, ghostscript, gnutls, sqlite3, pkg-config, imagemagick
5  - create a user jenkins
6  - clone gnupg-doc
7    $ git clone git://git.gnupg.org/gnupg-doc.git
8  - link ~/bin
9    $ ln -s gnupg-doc/misc/jenkins/bin
10  - download slave.jar
11    $ wget https://jenkins.gnupg.org/jnlpJars/slave.jar -O bin/slave.jar
12  - copy and adapt launcher
13    $ cp bin/jenkins-slave.dist bin/jenkins-slave
14  - make sure that jenkins@soro can ssh to the new node
15  - go to https://jenkins.gnupg.org/computer/new and copy an existing
16    configuration, adapting it as needed
17  - setup 'GPGME tests for GnuPG' as described below
18  - for each project, add the new nodes distinct label to the
19    configuration matrix, and force a rebuild.  Start with libgpg-error
20    and walk your way up the dependency chain:
21    - libgpg-error, libnpth, libassuan, libksba, libgcrypt, ntbtls,
22      gnupg, gpgme
23 ** GPGME tests for GnuPG
24 There is a reasonably up-to-date (but this is currently a manual
25 process) GPGME source at
26
27   $HOME/src/gpgme-for-gnupgs-tests
28
29 and a build tree at
30
31   $HOME/src/gpgme-for-gnupgs-tests/obj
32
33 and a w32 build tree at
34
35   $HOME/src/gpgme-for-gnupgs-tests/obj.w32
36
37 The tests from there are executed in GnuPG's test suite.
38 * Virtual machines
39 ** openbsd60
40 Packages installed:
41
42   # pkg_add zile zsh git autoconf-2.69p2 automake-1.15p0 gettext-tools \
43     gmake xfig bison readline libusb-compat ImageMagick makeinfo \
44     gcc-4.9.3p9 g++-4.9.3p9 qt5
45
46 Add some compatibility links to PATH:
47
48   $ mkdir -p ~/compat/{bin,lib,include}
49   $ cd ~/compat/bin
50   $ ln -s /usr/local/bin/gmakeinfo makeinfo
51   $ [ add $HOME/compat/bin to ~/.profile ]
52   $ cd ~/compat/lib
53   $ for F in /usr/local/lib/libbz2* /usr/local/lib/libiconv* /usr/local/lib/libintl* ; do ln -s $F ; done
54   $ cd ~/compat/include
55   $ for F in /usr/local/include/*bz*h /usr/local/include/*iconv*h /usr/local/include/*intl*h ; do ln -s $F ; done
56
57 Tweak limits:
58
59   # echo 'jenkins:\
60         :maxproc-max=1024:\
61         :maxproc-cur=1024:\
62         :tc=pbuild:
63 ' >> /etc/login.conf
64   # user mod -L jenkins jenkins