summaryrefslogtreecommitdiff
path: root/continuous_integration
diff options
context:
space:
mode:
Diffstat (limited to 'continuous_integration')
-rw-r--r--continuous_integration/autobuilder_requirements.mdwn25
-rw-r--r--continuous_integration/debian_jessie_setup.mdwn421
-rw-r--r--continuous_integration/debian_wheezy_setup.mdwn161
-rw-r--r--continuous_integration/freebsd_setup.mdwn67
-rw-r--r--continuous_integration/haiku_slave_setup.mdwn83
-rw-r--r--continuous_integration/mac_os_x_setup.mdwn9
-rw-r--r--continuous_integration/mac_os_x_snow_leopard_setup.mdwn80
-rw-r--r--continuous_integration/mac_os_x_yosemite_setup.mdwn77
-rw-r--r--continuous_integration/manual_debian_wheezy_setup.mdwn9
-rw-r--r--continuous_integration/manual_haiku_slave_setup.mdwn9
-rw-r--r--continuous_integration/manual_openbsd_setup.mdwn9
-rw-r--r--continuous_integration/openbsd_setup.mdwn127
-rw-r--r--continuous_integration/setup_haiku_slave.mdwn7
13 files changed, 1084 insertions, 0 deletions
diff --git a/continuous_integration/autobuilder_requirements.mdwn b/continuous_integration/autobuilder_requirements.mdwn
new file mode 100644
index 0000000..511fec8
--- /dev/null
+++ b/continuous_integration/autobuilder_requirements.mdwn
@@ -0,0 +1,25 @@
+[[!meta title="Autobuilder requirements"]]
+[[!meta author="Tlsa"]]
+[[!meta date="2009-07-08T13:38:43Z"]]
+
+
+[[!toc]] The current autobuilder
+script is in need of an overhaul. Additionally, we need more features
+for it to be useful in the future. This page enumerates the features we
+need.
+
+- Automated fetch of component sources
+- Detection of updated components
+- Configurable installation prefix/destdir and build environment
+- Ability to specify which versions of components are built for a
+ given product
+- Dependency tracking (so, e.g a change to Hubbub results in a new
+ NetSurf binary)
+- Robust rewriting of URLs in documentation (maybe better handled in
+ component buildsystems)
+- Retain features of existing autobuild.pl
+- Automated packaging of components for release
+- Automated creation of NSTools distribution for RISC OS.
+- Automatically run component testsuites, notifying any failures.
+ Also, compute code coverage statistics.
+
diff --git a/continuous_integration/debian_jessie_setup.mdwn b/continuous_integration/debian_jessie_setup.mdwn
new file mode 100644
index 0000000..fb794a8
--- /dev/null
+++ b/continuous_integration/debian_jessie_setup.mdwn
@@ -0,0 +1,421 @@
+[[!meta title="Continuous Integration Debian Jessie Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2016-07-06T12:46:14Z"]]
+
+
+[[!toc]]
+
+Debian jessie (8.x) OS install
+------------------------------
+
+### amd64 VDS install from media
+
+[[Virtual server setup|virtual_host_server]]
+
+Install minimal system from netinst CD (attached when VDS is created on
+phoenix) Config options:
+
+- In the "role" selection select "ssh server" and "system utilities"
+ only.
+- The whole disc default partitioning is fine
+- The base user the install insists on creating should be the netsurf
+ user.
+- Boot loader in MBR
+
+Once installed:
+
+- install sudo package and add netsurf user to sudo group
+- edit /etc/default/grub
+
+`GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8"`
+
+`# update-grub2`
+
+### arm64 VDS install
+
+[[ARM64 virtual server setup|virtual_host_server_arm64]]
+
+Once installed:
+
+- create netsurf user
+- install sudo package and add netsurf user to sudo group
+- edit /etc/inittab comment pty 3 through 6 and uncomment serial T0
+- enable backports
+
+`echo "deb `[`http://http.debian.net/debian`](http://http.debian.net/debian)` jessie-backports main" > /etc/apt/sources.list.d/backports.list`
+`apt-get update`
+
+- install updated kernel
+
+`apt-get install linux-image-4.3.0-0.bpo.1-arm64`
+
+### Banana Pi
+
+This system is a dual core ARMv7 allwinner using the armhf ABI
+
+Used the install SD media from
+[[http://www.igorpecovnik.com/2014/09/07/banana-pi-debian-sd-image/ Igor Pecovnik|http///www.igorpecovnik.com/2014/09/07/banana-pi-debian-sd-image/_igor_pecovnik]]
+
+- unzip and write raw file to full size SD card.
+
+Once installed:
+
+- first login as root:1234 which will need to be immediately changed
+- use the nand-sata-install script and moved the install to sata disc.
+ The drive needs to be a clean drive with a recognised partition
+ table (DOS or GPT) and a single partition where the OS will be
+ installed.
+- edit /etc/init.d/armhwinfo to remove the toilet dynamic MOTD banner
+- (re)move /etc/bash.bashrc.custom as it issues a lot of unnecessary
+ commands
+- adduser netsurf
+- change /etc/apt/sources.list to point at a local mirror
+- apt-get update
+- apt-get upgrade
+- install sudo package and add netsurf user to sudo group
+
+### Raspberry Pi 2
+
+This system is a quad core ARMv7 Broadcom using the armhf ABI
+
+Used install media from [[http://sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/ Sjored|http///sjoerd.luon.net/posts/2015/02/debian-jessie-on-rpi2/_sjored]]
+
+- unpack onto micro SD card with bmap-tools
+
+`On any debian-based linux type "sudo apt-get install bmap-tools" and install it.`
+`Then type "sudo bmaptool copy --nobmap 'yourlocation/jessie-rpi2.img' /dev/sdx" (Change yourlocation to the location of the .img file and sdx for the letter where the SD is mounted, if you don't know it type "sudo fdisk -l" and look for it).`
+
+Once installed:
+
+- first login as root:debian which will need to be immediately changed
+- Prevent package FLASH-KERNEL UPDATING FROM OFFICIAL REPO WITH APT
+ PINNING
+
+`'touch /etc/apt/preferences.d/flash-kernel' create a new file`
+`'vi /etc/apt/preferences.d/flash-kernel' edit it an add the following lines to it:`
+`Package: flash-kernel`
+`Pin: origin repositories.collabora.co.uk`
+`Pin-Priority: 1000`
+`'apt-cache policy flash-kernel' check if the package is pinned`
+
+- change /etc/apt/sources.list to point at a local mirror
+- apt-get update
+- apt-get upgrade
+- adduser netsurf
+- install sudo package and add netsurf user to sudo group
+
+### Orange Pi PC
+
+This system is a quad core ARMv7 allwinner H3 using the armhf ABI
+
+Used "mini" install media from
+[[http://www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342 loboris|http///www.orangepi.org/orangepibbsen/forum.php?mod=viewthread&tid=342_loboris]]
+
+- unpack image and write to micro SD card and configure as per loboris
+ instructions, careful installation steps are not immediately obvious
+
+Once installed:
+
+- first login as orangepi:orangepi which will need to be immediately
+ changed
+
+`* superuser available via sudo -i`
+
+- change /etc/apt/sources.list to point at a local mirror
+- apt-get update
+- apt-get upgrade
+- alter orangepi user to netsurf by editing
+
+`/etc/group (dont forget to replace orangepi on the sudo group)`
+`/etc/passwd`
+`/etc/shadow`
+`mv /home/orangepi /home/netsurf`
+
+Packaged CI worker install
+--------------------------
+
+Do a base OS install
+
+The recommended hostname for CI workers is "ciworker13" this allows us
+to clearly identify CI worker nodes. Note historically we have used
+"cislave1" which has been objected to by several users. See
+[[https://wiki.debian.org/HowTo/ChangeHostname changing hostname|https///wiki.debian.org/howto/changehostname_changing_hostname]] on how to achive this.
+
+On master jenkins use "manage nodes" to create new node. Ensure "remote
+fs root" is set to /var/lib/jenkins add variable JENKINS\_HOME set to
+/var/lib/jenkins
+
+Note: replace arm64 with architecture name as required (armhf etc.)
+
+As superuser:
+
+- create jenkins user
+
+`adduser --system --group --home /var/lib/jenkins/ --disabled-login jenkins`
+
+- Add CI server repo to slave apt sources
+
+`echo "deb `[`http://ci.netsurf-browser.org/debian/`](http://ci.netsurf-browser.org/debian/)` jessie/amd64/" >> /etc/apt/sources.list.d/netsurf-browser.list`
+
+- update repos
+
+`apt-get update`
+
+- install ns-ci-worker package. accept the large package list and the
+ unsigned package install for gcovr and ns-ci-slave
+
+`apt-get install ns-ci-worker`
+
+- edit /etc/default/ns-ci-worker to set the correct url and secret
+ parameters
+- If toolchains are to be built on the node ensure /opt is setup
+ correctly
+
+`mkdir -p /opt/netsurf`
+`chown jenkins:jenkins /opt/netsurf`
+
+- become jenkins user
+
+`su -s/bin/bash - jenkins`
+
+- create ssh keypair (accept defaults - no password)
+
+`ssh-keygen -t rsa -C "netsurf@cislave12.netsurf-browser.org"`
+
+- copy .ssh/id\_rsa.pub from slave to jenkins master node and append
+ to /home/netsurf/.ssh/authorized\_keys
+
+`scp /home/jenkins/.ssh/id_rsa.pub netsurf@ci.netsurf-browser.org:ciworker12_id_rsa.pub`
+
+- exit jenkins user shell
+- start CI worker daemon
+
+`/etc/init.d/ns-ci-worker start`
+
+Manual CI worker install
+------------------------
+
+### required packages
+
+The Netsurf repository has necessary updated packages in it and can be
+accessed by doing the following:
+
+- Add CI server repo to slave apt sources
+
+`echo "deb `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)` jessie/amd64/" >> /etc/apt/sources.list`
+
+- update repos
+
+`apt-get update`
+
+use apt to install these packages:
+
+`openjdk-7-jre-headless `
+`screen `
+`build-essential`
+`ccache`
+`clang`
+`git`
+`pkg-config`
+`check`
+`doxygen`
+`libjson0-dev (from our repo - needs bugfixes `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)`)`
+`libexpat1-dev`
+`libxml-perl`
+`libxml-xpath-perl`
+`lcov`
+`gcovr (from our repo)`
+`gperf`
+`flex`
+`bison`
+`libpng-dev`
+`libjpeg-dev`
+`libmozjs185-dev`
+`libglib2.0-dev`
+`libcurl4-openssl-dev`
+`liblcms1-dev`
+`libxml2-dev`
+`librsvg2-dev`
+`libmng-dev`
+`libgtk2.0-dev`
+`libmozjs-dev`
+
+### config
+
+- on master jenkins use "manage nodes" to create new node. Ensure
+ "remote fs root" is set to /home/netsurf/jenkins
+- create netsurf user
+- as netsurf user:
+ - wget <http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar>
+ - run screen
+ - create jenkins-slave.sh
+
+`#!/bin/bash`
+
+`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/chimera/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/chimera/slave-agent.jnlp)` -secret 0123456789abcdef01234567890abcdef`
+
+- - run jenkins-slave.sh
+ - create new screen tab
+ - create ssh keypair (accept defaults - no password)
+
+`ssh-keygen -t rsa -C "netsurf@cislave0.netsurf-browser.org"`
+
+- - copy .ssh/id\_rsa.pub from slave to jenkins master node and
+ append to /home/netsurf/.ssh/authorized\_keys
+
+`scp ci.netsurf-browser.org:.ssh/id_rsa.pub .id_rsa.pub`
+`cat id_rsa.pub >> .ssh/authorized_keys`
+
+- - copy .ssh/id\_rsa.pub from master node to slave and append to
+ /home/netsurf/.ssh/authorized\_keys
+ - create reverse-ssh.sh (change tunnel port number!)
+
+`#!/bin/sh`
+
+`ssh -R 22224:localhost:22 netsurf@ci.netsurf-browser.org 'bash -c "while true; do echo .; sleep 60; done"'`
+
+- - run reverse-ssh.sh
+ - on the master create a shell script to use the ssh tunnel
+ connection, thus firewalls etc are moot as long as the slave can
+ connect to the master
+
+`ssh netsurf@localhost -p 22223`
+
+Pbuilder setup
+--------------
+
+This allows a worker to build Debian packages. The worker should be
+installed as a normal CI worker node and then:
+
+as superuser on node:
+
+- apt-get install pbuilder
+- addgroup pbuilder
+- addgroup jenkins pbuilder
+- create /etc/sudoers.d/pbuilder
+
+`jenkins         ALL = NOPASSWD:/usr/sbin/pbuilder`
+
+- visudo and alter Defaults
+
+`Defaults        env_reset,env_keep="DIST ARCH"`
+
+- replace /etc/pbuilderrc
+
+`# this is your configuration file for pbuilder.`
+`# the file in /usr/share/pbuilder/pbuilderrc is the default template.`
+`# /etc/pbuilderrc is the one meant for overwriting defaults in`
+`# the default template`
+`#`
+`# read pbuilderrc.5 document for notes on specific options.`
+`# List of Debian suites.`
+`DEBIAN_SUITES=("sid", "stretch", "jessie", "wheezy", "squeeze")`
+``
+`# List of Ubuntu suites.`
+`UBUNTU_SUITES=("vivid" "utopic" "trusty" "saucy" "raring" "quantal" "precise" "oneiric" "natty" "lucid" "hardy")`
+``
+`# Mirrors to use. Update these to your preferred mirror.`
+`DEBIAN_MIRROR="ftp.uk.debian.org"`
+`UBUNTU_MIRROR="mirrors.kernel.org"`
+``
+`# set a default distribution if none is used.`
+`: ${DIST:="$(lsb_release --short --codename)"}`
+``
+`# set the architecture to the host architecture if none set.`
+`: ${ARCH:="$(dpkg --print-architecture)"}`
+``
+`NAME="$DIST"`
+`if [ -n "${ARCH}" ]; then`
+`    NAME="$NAME-$ARCH"`
+`    DEBOOTSTRAPOPTS=("--arch" "$ARCH" "${DEBOOTSTRAPOPTS[@]}")`
+`fi`
+`BASETGZ="/var/cache/pbuilder/$NAME-base.tgz"`
+`DISTRIBUTION="$DIST"`
+`BUILDRESULT="/var/cache/pbuilder/$NAME/result/"`
+`APTCACHE="/var/cache/pbuilder/$NAME/aptcache/"`
+`BUILDPLACE="/var/cache/pbuilder/build/"`
+``
+`if $(echo ${DEBIAN_SUITES[@]} | grep -q $DIST); then`
+`    # Debian configuration`
+`    MIRRORSITE="http://$DEBIAN_MIRROR/debian/"`
+`    COMPONENTS="main contrib non-free"`
+`    if $(echo "$STABLE_CODENAME stable" | grep -q $DIST); then`
+`        OTHERMIRROR="$OTHERMIRROR | deb $MIRRORSITE $STABLE_BACKPORTS_SUITE $COMPONENTS"`
+`    fi`
+`elif $(echo ${UBUNTU_SUITES[@]} | grep -q $DIST); then`
+`    # Ubuntu configuration`
+`    MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"`
+`    COMPONENTS="main restricted universe multiverse"`
+`else`
+`    echo "Unknown distribution: $DIST"`
+`    exit 1`
+`fi`
+
+The architecture is assumed to be the native one from
+
+`dpkg --print-architecture`
+
+This can be set by passing ARCH to pbuilder (useful for i386 maybe?)
+
+for each distribution this node will build for:
+
+- create pbuilder result directory and set ownership permissions
+
+`mkdir -p /var/cache/pbuilder/jessie-armhf/result`
+`chown root:pbuilder /var/cache/pbuilder/jessie-armhf/result`
+`chmod g+w /var/cache/pbuilder/jessie-armhf/result`
+
+- become jenkins user
+
+`su -s/bin/bash - jenkins`
+
+- create pbuilder base for distribution
+
+`sudo DIST=jessie pbuilder create`
+
+- if desired additional packages and config can be made to the base
+ with
+
+`sudo DIST=jessie pbuilder login --save-after-login`
+
+distcc worker node
+------------------
+
+Do a basic OS install but \*not\* a CI worker setup.
+
+A recommended hostname for distcc worker is something like "cicpu0" this
+allows us to use systems as processing node for other purposes than just
+distcc in future. See debians
+[[https://wiki.debian.org/HowTo/ChangeHostname changing hostname|https///wiki.debian.org/howto/changehostname_changing_hostname]] on how to achive this.
+
+The Netsurf repository has necessary updated packages in it and can be
+accessed by doing the following:
+
+- Add CI server repo to slave apt sources
+
+`echo "deb `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)` jessie/amd64/" >> /etc/apt/sources.list`
+
+- update repos
+
+`apt-get update`
+
+- use apt to install these packages:
+
+`build-essential`
+`gcc`
+`clang`
+`distcc`
+
+- edit /etc/default/distcc
+
+`STARTDISTCC="true"`
+`ALLOWEDNETS="192.168.211.0/24"`
+`LISTEN="0.0.0.0"`
+`JOBS="8"`
+
+- start the service
+
+`service distcc start`
+
+- ensure the client has hosts set to use the new worker
+
diff --git a/continuous_integration/debian_wheezy_setup.mdwn b/continuous_integration/debian_wheezy_setup.mdwn
new file mode 100644
index 0000000..fcd3a11
--- /dev/null
+++ b/continuous_integration/debian_wheezy_setup.mdwn
@@ -0,0 +1,161 @@
+[[!meta title="Continuous Integration Debian Wheezy Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2014-12-20T11:46:57Z"]]
+
+
+[[!toc]]
+
+## Debian wheezy (7.0) OS install
+
+Install minimal system from netinst CD (attached when VDS is created on
+phoenix) Config options:
+
+- In the "role" selection select "ssh server" and "system utilities"
+ only.
+- The whole disc default partitioning is fine
+- The base user the install insists on creating should be the netsurf
+ user.
+- Boot loader in MBR
+
+Once installed:
+
+- install sudo package and add netsurf user to sudo group
+- edit /etc/inittab comment pty 3 through 6 and uncomment serial T0
+
+## Packaged Setup for Debian wheezy (7.0)
+
+on master jenkins use "manage nodes" to create new node. Ensure "remote
+fs root" is set to /var/lib/jenkins add variable JENKINS\_HOME set to
+/var/lib/jenkins
+
+As superuser:
+
+- create jenkins user
+
+`adduser --system --group --home /var/lib/jenkins/ --disabled-login jenkins`
+
+- Add CI server repo to slave apt sources
+
+`echo "deb `[`http://ci.netsurf-browser.org/debian/`](http://ci.netsurf-browser.org/debian/)` wheezy/amd64/" >> /etc/apt/sources.list.d/netsurf-browser.list`
+
+- update repos
+
+`apt-get update`
+
+- install ns-ci-slave package. accept the large package list and the
+ unsigned package install for gcovr and ns-ci-slave
+
+`apt-get install ns-ci-slave`
+
+- edit /etc/default/ns-ci-slave to set the correct url and secret
+ parameters
+- If toolchains are to be built on the node ensure /opt is setup
+ correctly
+
+`mkdir -p /opt/netsurf`
+`chown jenkins:jenkins /opt/netsurf`
+
+- become jenkins user
+
+`su -s/bin/bash - jenkins`
+
+- create ssh keypair (accept defaults - no password)
+
+`ssh-keygen -t rsa -C "netsurf@cislave10.netsurf-browser.org"`
+
+- copy .ssh/id\_rsa.pub from slave to jenkins master node and append
+ to /home/netsurf/.ssh/authorized\_keys
+
+`scp /home/jenkins/.ssh/id_rsa.pub netsurf@ci.netsurf-browser.org:cislave10_id_rsa.pub`
+
+- exit jenkins user shell
+- start slave daemon
+
+`/etc/init.d/ns-ci-slave start`
+
+## Manual Setup of Debian wheezy (7.0)
+
+### required packages
+
+use apt to install all these. The Netsurf repository has the necessary
+updated packages in it and can be accessed by doing the following:
+
+- Add CI server repo to slave apt sources
+
+`echo "deb `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)` wheezy/amd64/" >> /etc/apt/sources.list`
+
+- update repos
+
+`apt-get update`
+
+`openjdk-7-jre-headless `
+`screen `
+`build-essential`
+`ccache`
+`clang`
+`git`
+`pkg-config`
+`check`
+`doxygen`
+`libjson0-dev (from our repo - needs bugfixes `[`http://ci.netsurf-browser.org/builds/debian/`](http://ci.netsurf-browser.org/builds/debian/)`)`
+`libexpat1-dev`
+`libxml-perl`
+`libxml-xpath-perl`
+`lcov`
+`gcovr (from our repo)`
+`gperf`
+`flex`
+`bison`
+`libpng-dev`
+`libjpeg-dev`
+`libmozjs185-dev`
+`libglib2.0-dev`
+`libcurl4-openssl-dev`
+`liblcms1-dev`
+`libxml2-dev`
+`librsvg2-dev`
+`libmng-dev`
+`libgtk2.0-dev`
+`libmozjs-dev`
+
+### config
+
+- on master jenkins use "manage nodes" to create new node. Ensure
+ "remote fs root" is set to /home/netsurf/jenkins
+- create netsurf user
+- as netsurf user:
+ - wget <http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar>
+ - run screen
+ - create jenkins-slave.sh
+
+`#!/bin/bash`
+
+`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/chimera/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/chimera/slave-agent.jnlp)` -secret 0123456789abcdef01234567890abcdef`
+
+- - run jenkins-slave.sh
+ - create new screen tab
+ - create ssh keypair (accept defaults - no password)
+
+`ssh-keygen -t rsa -C "netsurf@cislave0.netsurf-browser.org"`
+
+- - copy .ssh/id\_rsa.pub from slave to jenkins master node and
+ append to /home/netsurf/.ssh/authorized\_keys
+
+`scp ci.netsurf-browser.org:.ssh/id_rsa.pub .id_rsa.pub`
+`cat id_rsa.pub >> .ssh/authorized_keys`
+
+- - copy .ssh/id\_rsa.pub from master node to slave and append to
+ /home/netsurf/.ssh/authorized\_keys
+ - create reverse-ssh.sh (change tunnel port number!)
+
+`#!/bin/sh`
+
+`ssh -R 22224:localhost:22 netsurf@ci.netsurf-browser.org 'bash -c "while true; do echo .; sleep 60; done"'`
+
+- - run reverse-ssh.sh
+ - on the master create a shell script to use the ssh tunnel
+ connection, thus firewalls etc are moot as long as the slave can
+ connect to the master
+
+`ssh netsurf@localhost -p 22223`
+
diff --git a/continuous_integration/freebsd_setup.mdwn b/continuous_integration/freebsd_setup.mdwn
new file mode 100644
index 0000000..d2bde05
--- /dev/null
+++ b/continuous_integration/freebsd_setup.mdwn
@@ -0,0 +1,67 @@
+[[!meta title="Continuous Integration FreeBSD Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2014-12-21T02:25:02Z"]]
+
+
+[[!toc]]
+
+Manual setup of FreeBSD 10.1
+----------------------------
+
+Install VM from ISO the usual 1G of RAM and 40G of disc is sufficient.
+The install will ask for root password, also create a jenkins user and
+give it a password and home dir of /var/lib/jenkins .
+
+I had lots of issues trying to get ps2 mouse support working, the usb
+mouse did work but a CI slave does not need it.
+
+enable serial console
+
+`echo 'console="comconsole"' >> /boot/loader.conf`
+
+ensure pkg-config is replaced by the freebsd equivalent
+
+`pkg set -o devel/pkg-config:devel/pkgconf`
+`pkg install -f devel/pkgconf`
+
+### required packages
+
+Ensure all ports were added in the install or mess with ports as needed
+
+The first run of the pkg command will prompt you to install it.
+
+`pkg install curl`
+
+is a good starting place.
+
+Required packages:
+
+`git`
+`gmake`
+`bash`
+`ccache`
+`flex`
+`bison`
+`png`
+`jpeg`
+`wget `
+`gtk2`
+`openssl`
+`p5-HTML-Parser`
+`screen`
+`gperf`
+`rsync`
+`openjdk`
+
+### config
+
+on master jenkins use "manage nodes" to create new node. Ensure "remote
+fs root" is set to /var/lib/jenkins add variable JENKINS\_HOME set to
+/var/lib/jenkins
+
+As superuser on slave:
+
+- create jenkins user
+
+`adduser -home /var/lib`
+
diff --git a/continuous_integration/haiku_slave_setup.mdwn b/continuous_integration/haiku_slave_setup.mdwn
new file mode 100644
index 0000000..cde58e8
--- /dev/null
+++ b/continuous_integration/haiku_slave_setup.mdwn
@@ -0,0 +1,83 @@
+[[!meta title="Continuous Integration Haiku Slave Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2014-11-21T12:14:02Z"]]
+
+
+[[!toc]] install nightly x86 GCC 2
+Hybrid (http://download.haiku-os.org/nightly-images/x86\_gcc2\_hybrid/)
+
+once installed
+
+enable sshd with
+
+`useradd sshd`
+
+default user is "user"
+
+set default password with passwd
+
+` shutdown -r`
+
+restart system
+
+install build deps (possibly some already present)
+
+`pkgman install git curl_devel libpng_devel jpeg_devel openssl_devel libiconv_devel expat_devel gperf html_parser devel:libiconv_x86 devel:libssl_x86 devel:libexpat_x86 cmd:pkg_config_x86 ccache`
+
+ssh keys
+--------
+
+create ssh keypair (accept defaults - no password)
+
+`ssh-keygen -t rsa -C "netsurf@cislave0.netsurf-browser.org"`
+
+copy /boot/home/config/settings/ssh/id\_rsa.pub from slave to jenkins
+master node and append to /home/netsurf/.ssh/authorized\_keys
+
+`scp /boot/home/config/settings/ssh/id_rsa.pub foo@ci.netsurf-browser.org:cislave3.id_rsa.pub`
+
+copy .ssh/id\_rsa.pub from master node to slave and append to
+/boot/home/config/settings/ssh/authorized\_keys
+
+`scp ci.netsurf-browser.org:.ssh/id_rsa.pub id_rsa.pub`
+`cat id_rsa.pub >> /boot/home/config/settings/ssh/authorized_keys`
+
+jenkins slave setup
+-------------------
+
+install java\_x86
+
+`pkgman install openjdk`
+
+edit shell profile /etc/profile.d/openjdk.sh
+
+`` JAVA_CONFIG=`which java-config || which java-config-x86` ``
+`` JAVA_HOME=`$JAVA_CONFIG -H` ``
+`export JAVA_HOME`
+
+create jenkins-slave.sh
+
+`#!/bin/bash`
+
+`# use gcc4 in preference to gcc2 as some libraries use c99 constructs`
+`export PATH=/system/bin/x86:$PATH`
+
+`nohup java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/cislave3/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/cislave3/slave-agent.jnlp)` -secret 1234 >jenkins-slave.output &`
+
+copy the script to /boot/home/config/settings/boot/launch/ to make it
+start on boot
+
+system can be manually restarted with
+
+`shutdown -r`
+
+current issues
+--------------
+
+As of 24th June 2014 we have some persistant kernel crashes on the
+active CI slave. Bugs are:
+
+<https://dev.haiku-os.org/ticket/10975>
+
+<https://dev.haiku-os.org/ticket/10977>
+
diff --git a/continuous_integration/mac_os_x_setup.mdwn b/continuous_integration/mac_os_x_setup.mdwn
new file mode 100644
index 0000000..9fa4895
--- /dev/null
+++ b/continuous_integration/mac_os_x_setup.mdwn
@@ -0,0 +1,9 @@
+[[!meta title="Continuous Integration Mac OS X Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2016-02-06T11:36:48Z"]]
+
+
+[[!toc]]
+
+1. REDIRECT [[Continuous Integration Mac OS X Snow Leopard Setup|continuous_integration_mac_os_x_snow_leopard_setup]]
+
diff --git a/continuous_integration/mac_os_x_snow_leopard_setup.mdwn b/continuous_integration/mac_os_x_snow_leopard_setup.mdwn
new file mode 100644
index 0000000..5df37ab
--- /dev/null
+++ b/continuous_integration/mac_os_x_snow_leopard_setup.mdwn
@@ -0,0 +1,80 @@
+[[!meta title="Continuous Integration Mac OS X Snow Leopard Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2016-02-06T11:52:56Z"]]
+
+
+[[!toc]]
+
+Manual Installation
+-------------------
+
+Install snow leopard from master discs
+
+Create jenkins user
+
+Install XCode
+
+Software update to latest version
+
+Enable remote login (sshd)
+
+if xcode 4 is installed you need to do:
+
+`sudo xcodebuild -license`
+
+Install [[https://code.google.com/p/tunnelblick/ tunnelblick|https///code.google.com/p/tunnelblick/_tunnelblick]] and configure for
+auto start openvpn to ci master
+
+Download Mac Ports:
+
+`curl -o MacPorts-2.3.1-10.6-SnowLeopard.pkg `[`https://distfiles.macports.org/MacPorts/MacPorts-2.3.1-10.6-SnowLeopard.pkg`](https://distfiles.macports.org/MacPorts/MacPorts-2.3.1-10.6-SnowLeopard.pkg)
+
+double click on the pkg file to install
+
+Update ports database ready for use
+
+`export PATH=/opt/local/bin:/opt/local/sbin:$PATH`
+`sudo port -v selfupdate`
+
+install required packages
+
+`sudo port install git ccache expat openssl curl libjpeg-turbo libpng p5-html-parser screen bison`
+
+As jenkins user:
+
+create jenkins workspace directory
+
+`mkdir jenkins`
+
+download slave jar
+
+`curl -o slave.jar `[`http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar`](http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar)
+
+Add node on jenkins master CI instance
+
+`Name       cislave7`
+`Description    Mac os X build slave`
+`# of executors 1`
+`Remote FS root /Users/jenkins/jenkins`
+`Labels     i686-apple-darwin10`
+
+take note of secret for use.
+
+create jenkins slave script
+
+`cat << EOF > jenkins-slave.sh`
+`#!/bin/sh`
+
+`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/cislave7/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/cislave7/slave-agent.jnlp)` -secret 1234`
+`EOF`
+`chmod a+x jenkins-slave.sh`
+
+create ssh keypair (accept defaults - no password)
+
+`ssh-keygen -t rsa -C "netsurf@cislave8.netsurf-browser.org"`
+
+copy .ssh/id\_rsa.pub from slave to jenkins master node and append to
+/home/netsurf/.ssh/authorized\_keys
+
+start slave daemon in screen
+
diff --git a/continuous_integration/mac_os_x_yosemite_setup.mdwn b/continuous_integration/mac_os_x_yosemite_setup.mdwn
new file mode 100644
index 0000000..8acf882
--- /dev/null
+++ b/continuous_integration/mac_os_x_yosemite_setup.mdwn
@@ -0,0 +1,77 @@
+[[!meta title="Continuous Integration Mac OS X Yosemite Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2016-02-06T14:27:38Z"]]
+
+
+[[!toc]] Install yosemite
+
+set system name in system preferences-\>sharing
+
+Update system in app store
+
+Install Xcode from app store
+
+install xcode commandline tools
+
+`xcode-select --install`
+
+accept licence
+
+`xcodebuild -license`
+
+install java
+
+install [[https://www.macports.org/install.php Mac Ports|https///www.macports.org/install.php_mac_ports]]
+
+Update ports database ready for use
+
+`sudo port -v selfupdate`
+`sudo port upgrade outdated`
+
+install required packages
+
+`sudo port install git ccache expat openssl curl libjpeg-turbo libpng p5-html-parser screen bison pkgconfig`
+
+create jenkins user
+
+enable ssh login for jenkins user in system
+preferences-\>sharing-\>remote login
+
+Add node on jenkins master CI instance.
+
+`Name       cislave14`
+`Description    Mac os X yosemite build slave`
+`# of executors 2`
+`Remote FS root /Users/jenkins/jenkins`
+`Labels     x86_64-apple-darwin14.5.0`
+
+take note of secret and slave url for use in next steps.
+
+As jenkins user:
+
+create jenkins workspace directory
+
+`mkdir jenkins`
+
+download slave jar
+
+`curl -o slave.jar `[`http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar`](http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar)
+
+create jenkins slave script
+
+`cat << EOF > jenkins-slave.sh`
+`#!/bin/sh`
+
+`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/cislave7/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/cislave7/slave-agent.jnlp)` -secret 1234`
+`EOF`
+`chmod a+x jenkins-slave.sh`
+
+create ssh keypair (accept defaults - no password)
+
+`ssh-keygen -t rsa -C "netsurf@cislave8.netsurf-browser.org"`
+
+copy .ssh/id\_rsa.pub from slave to jenkins master node and append to
+/home/netsurf/.ssh/authorized\_keys
+
+start slave daemon in screen
+
diff --git a/continuous_integration/manual_debian_wheezy_setup.mdwn b/continuous_integration/manual_debian_wheezy_setup.mdwn
new file mode 100644
index 0000000..ea2b94e
--- /dev/null
+++ b/continuous_integration/manual_debian_wheezy_setup.mdwn
@@ -0,0 +1,9 @@
+[[!meta title="Continuous Integration Manual Debian Wheezy Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2014-09-18T15:54:45Z"]]
+
+
+[[!toc]]
+
+1. REDIRECT [[Continuous Integration Debian Wheezy Setup|continuous_integration/debian_wheezy_setup]]
+
diff --git a/continuous_integration/manual_haiku_slave_setup.mdwn b/continuous_integration/manual_haiku_slave_setup.mdwn
new file mode 100644
index 0000000..0b0a4d4
--- /dev/null
+++ b/continuous_integration/manual_haiku_slave_setup.mdwn
@@ -0,0 +1,9 @@
+[[!meta title="Continuous Integration Manual Haiku Slave Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2014-09-18T15:58:26Z"]]
+
+
+[[!toc]]
+
+1. REDIRECT [[Continuous Integration Haiku Slave Setup|continuous_integration_haiku_slave_setup]]
+
diff --git a/continuous_integration/manual_openbsd_setup.mdwn b/continuous_integration/manual_openbsd_setup.mdwn
new file mode 100644
index 0000000..dbc54be
--- /dev/null
+++ b/continuous_integration/manual_openbsd_setup.mdwn
@@ -0,0 +1,9 @@
+[[!meta title="Continuous Integration Manual OpenBSD Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2014-09-18T15:56:47Z"]]
+
+
+[[!toc]]
+
+1. REDIRECT [[Continuous Integration OpenBSD Setup|continuous_integration/openbsd_setup]]
+
diff --git a/continuous_integration/openbsd_setup.mdwn b/continuous_integration/openbsd_setup.mdwn
new file mode 100644
index 0000000..6057e69
--- /dev/null
+++ b/continuous_integration/openbsd_setup.mdwn
@@ -0,0 +1,127 @@
+[[!meta title="Continuous Integration OpenBSD Setup"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2015-05-03T07:53:24Z"]]
+
+
+[[!toc]]
+
+Manual setup of OpenBSD 5.7
+---------------------------
+
+### system prep
+
+- set serial console up for VM
+ <http://www.openbsd.org/faq/faq7.html#SerCon>
+
+### required packages
+
+Ensure all ports were added in the install or mess with ports as needed
+
+`pkg_add -v jdk-1.7.0.71v0 screen-4.0.3p4 ccache gcc-4.9.2p3`
+`pkg_add -v rsync-3.1.1-iconv git check doxygen `
+`pkg_add -v gperf flex bison gtk+2 png jpeg spidermonkey-1.9.2.28p1v0`
+`pkg_add -v wget curl bash gmake p5-HTML-Parser`
+
+### config
+
+Add node on jenkins master CI instance
+
+`Name       cislave6`
+`Description    OpenBSD 5.7 worker`
+`# of executors 1`
+`Remote FS root /var/lib/jenkins`
+`Labels     amd64-unknown-openbsd5.7`
+
+take note of secret for use.
+
+add jenkins user
+
+`mkdir /var/lib`
+`adduser -home /var/lib`
+
+login as jenkins user
+
+download slave jar
+
+`curl -o slave.jar `[`http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar`](http://ci.netsurf-browser.org/jenkins/jnlpJars/slave.jar)
+
+create jenkins slave script
+
+`cat << EOF > jenkins-slave.sh`
+`#!/bin/sh`
+
+`java -Djava.awt.headless=true -jar slave.jar -jnlpUrl `[`http://ci.netsurf-browser.org/jenkins/computer/cislave6/slave-agent.jnlp`](http://ci.netsurf-browser.org/jenkins/computer/cislave6/slave-agent.jnlp)` -secret 1234`
+`EOF`
+`chmod a+x jenkins-slave.sh`
+
+create ssh keypair (accept defaults - no password)
+
+`ssh-keygen -t rsa -C "netsurf@cislave8.netsurf-browser.org"`
+
+copy .ssh/id\_rsa.pub from slave to jenkins master node and append to
+/home/netsurf/.ssh/authorized\_keys
+
+start slave daemon in screen
+
+Manual setup of OpenBSD 5.5
+---------------------------
+
+### required packages
+
+Ensure all ports were added in the install or mess with ports as needed
+
+`pkg_add -v jdk-1.7.0.21p2v0  screen-4.0.3p4 ccache gcc-4.8.2p2`
+`pkg_add -v rsync-3.1.0-iconv git check doxygen `
+`pkg_add -v gperf flex bison gtk+2 png jpeg spidermonkey-1.9.2.28p1v0`
+`pkg_add -v wget curl bash gmake p5-HTML-Parser`
+
+### config
+
+- on master jenkins use "manage nodes" to create new node. Ensure
+ "remote fs root" is set to /var/lib/jenkins add variable
+ JENKINS\_HOME set to /var/lib/jenkins
+- As superuser on slave
+ - mkdir /var/lib
+ - create jenkins user
+
+`adduser -home /var/lib`
+
+Manual setup of OpenBSD 5.4
+---------------------------
+
+### required packages
+
+Ensure all ports were added in the install or mess with ports as needed
+
+`jdk-1.7.0.21v0`
+`screen-4.0.3p3`
+`ccache`
+`gcc-4.8.1p2`
+`rsync-3.0.9p3-iconv`
+`git`
+`check`
+`doxygen`
+`gperf`
+`flex`
+`bison`
+`gtk+2`
+`png`
+`jpeg`
+`spidermonkey-1.9.2.28p0v0`
+`wget`
+`curl`
+`bash`
+`gmake`
+`p5-HTML-Parser`
+
+### config
+
+- on master jenkins use "manage nodes" to create new node. Ensure
+ "remote fs root" is set to /var/lib/jenkins add variable
+ JENKINS\_HOME set to /var/lib/jenkins
+- As superuser on slave
+ - mkdir /var/lib
+ - create jenkins user
+
+`adduser -home /var/lib`
+
diff --git a/continuous_integration/setup_haiku_slave.mdwn b/continuous_integration/setup_haiku_slave.mdwn
new file mode 100644
index 0000000..35b4348
--- /dev/null
+++ b/continuous_integration/setup_haiku_slave.mdwn
@@ -0,0 +1,7 @@
+[[!meta title="Continuous Integration Setup Haiku Slave"]]
+[[!meta author="Kyllikki"]]
+[[!meta date="2014-06-20T15:03:32Z"]]
+
+
+[[!toc]] **Page was empty**
+