summaryrefslogtreecommitdiff
path: root/continuous_integration.mdwn
blob: e494d590ab89c7034f997f6c64e755c4269dfc3c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
[[!meta title="Continuous Integration"]]
[[!meta author="Kyllikki"]]
[[!meta date="2016-02-06T11:38:14Z"]]


[[!toc]] 

The CI system is a jenkins instance accessed at <http://ci.netsurf-browser.org/>


## Master

The master instance is a VPS provided by Mythic beasts.

The Jenkins install on the master server is a snapshot release version.

### generating openvpn keys

the VPN is setup to use certificates and signed keys, each client needs a certificate and key set generating for its openvpn setup.

become superuser on master

    cd open-vpn-easy
    source ./vars
    ./build-key ciworker17

answer questions and set no password

keys/certificates are written to open-vpn-easy/keys and can be copied to teh clients as required.

## Slave

The majority of the build slaves are provided by our own
[[virtual host server|virtual_host_server]] excepting operating
systems which cannot be virtualised (principally MAC OS X).

### [[Debian 9 (Stretch) Setup|continuous_integration/debian_stretch_setup]]

### [[Fedora 26 Setup|continuous_integration/fedora_26_setup]]

### [[OpenBSD Setup|continuous_integration/openbsd_setup]]

### [[FreeBSD Setup|continuous_integration/freebsd_setup]]

### [[Haiku Setup|continuous_integration/haiku_slave_setup]]

### [[Mac OS X Snow Leopard Setup|continuous_integration/mac_os_x_snow_leopard_setup]]

### [[Mac OS X Yosemite Setup|continuous_integration/mac_os_x_yosemite_setup]]

## Network

A VPN between the master node and all the build slaves provides a
network where no machines are publicly accessible.

A [[network map|continuous_integration/netsurf_ci_network_diagram.pdf]]
has been produced to make visualising the private network easier.

The network uses OpenVPN to create a LAN which other systems
connect. The [[virtual host server|virtual_host_server]] instances are
all bridged to the LAN on a single openVPN link. All the physical
nodes for Mac OS X, armhf etc. are bridged via Vincents router through
a single openvpn link. The scaleway and other nodes connect with
separate openvpn connections.

The master node also runs a dnsmasq instance which provides name
service and DHCP for the CI LAN. The dnsmasq config file has static
mappings for the CI slaves DHCP responses using 192.168.211.100 for CI
worker 0 and so on up the range to 192.168.211.130 for worker 30

All virtual machines use locally administered MAC adresses in the
0E:xx:xx:xx:x:xx prefix range.

  - 0e:00:00:00:01:xx used for phoenix VM host
  - 0e:00:00:00:02:xx used for arrch64vmhost VM host
  - 0e:00:00:00:03:xx used for scaleway VM host

In addition ssh based tunnels are used to copy data between CI nodes.

## Historical

The old discussion on [[Autobuilder requirements|continuous_integration/autobuilder_requirements]] lists requirements for the new autobuilder.

Obsolete slave setups:

  - [[Debian 8 (Jessie) Setup|continuous_integration/debian_jessie_setup]]
  - [[Debian 7 (Wheezy) Setup|continuous_integration/debian_wheezy_setup]]
  - [[Fedora 25 Setup|continuous_integration/fedora_25_setup]]