Add some docs about removed isos
[grml-server-setup.git] / jenkins.asciidoc
1 jenkins.grml.org documentation
2 ==============================
3 Grml team <info@grml.org>
4 v0.0, Jan 2012
5
6 Installation
7 ------------
8
9 Jenkins package
10 ~~~~~~~~~~~~~~~
11
12   cat > /etc/apt/sources.list.d/jenkins.list << EOF
13   deb http://pkg.jenkins-ci.org/debian binary/
14   EOF
15
16   wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add -
17   apt-get update
18   apt-get install jenkins
19
20 Jenkins plugins
21 ~~~~~~~~~~~~~~~
22
23   wget -O default.js http://updates.jenkins-ci.org/update-center.json
24   sed '1d;$d' default.js > default.json
25   apt-get install curl
26   curl -X POST -H "Accept: application/json" -d @default.json http://localhost:8080/updateCenter/byId/default/postBack --verbose
27   java -jar jenkins-cli.jar -s http://localhost:8080/ login --username $USER --password $PASSWORD
28   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin git
29   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin build-timeout
30   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin github
31   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin promoted-builds
32   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin backup
33   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin ruby-runtime
34   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin artifactdeployer
35   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin ircbot
36   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin configurationslicing
37   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin dashboard-view
38   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin copyartifact
39   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin jobConfigHistory
40   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin disk-usage
41   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin ws-cleanup
42   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin sidebar-link
43   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin locks-and-latches
44   java -jar jenkins-cli.jar -s http://localhost:8080/ install-plugin grml-live.hpi
45
46   cd /var/lib
47   mv jenkins /srv/
48   ln -s /srv/jenkins jenkins
49
50   /etc/init.d/jenkins restart
51
52 jenkins-debian-glue
53 ~~~~~~~~~~~~~~~~~~~
54
55   apt-get install cowbuilder devscripts dpkg-dev git-buildpackage fakeroot debhelper reprepro
56   dpkg -i jenkins-debian-glue_0.0.1_all.deb
57
58   su - jenkins
59   git config --global user.name "Grml Jenkins User"
60   git config --global user.email "jenkins@grml.org"
61
62   mkdir /srv/repository
63   chown jenkins /srv/repository
64
65   # installing .gnupg from old host to /var/lib/jenkins
66
67   mkdir /etc/jenkins
68   cp /usr/share/jenkins-debian-glue/examples/debian_glue /etc/jenkins/debian_glue
69   $EDITOR /etc/jenkins/debian_glue # set KEY_ID=52D4A654
70
71 Nginx
72 ~~~~~
73
74   apt-get install nginx
75
76   ln -s /srv/repository /srv/debian
77
78   mkdir -p /srv/dailyiso/public
79   cd /srv/dailyiso/public
80   ln -s public daily
81
82   cat > /etc/nginx/sites-available/default << EOF
83   server {
84           listen   80;
85           listen   [::]:80 default ipv6only=on;
86
87           server_name ci.grml.org;
88           access_log  /var/log/nginx/jenkins_http.access.log;
89
90           location /debian {
91                   root   /srv;
92                   autoindex on;
93           }
94
95           location /daily {
96                   root   /srv/dailyiso/;
97                   autoindex on;
98           }
99
100   #        location / {
101   #                rewrite ^ https://ci.grml.org$request_uri? permanent;
102   #        }
103
104           location / {
105               proxy_set_header X-Real-IP $remote_addr;
106               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
107               proxy_set_header X-Forwarded-Proto https;
108               proxy_set_header Host $http_host;
109               proxy_pass http://ci.grml.org:8080/;
110               #proxy_redirect http://ci.grml.org/ https://ci.grml.org/;
111           }
112   }
113
114   server {
115           listen   443;
116           listen   [::]:443 default ipv6only=on;
117
118           server_name  ci.grml.org;
119           access_log  /var/log/nginx/jenkins_https.access.log;
120
121           ssl on;
122           ssl_certificate  /etc/nginx/ssl/server.crt;
123           ssl_certificate_key  /etc/nginx/ssl/server.key;
124           ssl_session_timeout  5m;
125           # openssl ciphers -v HIGH:\!ADH:\!DH:\!3DES:\!MD5
126           ssl_ciphers HIGH:!ADH:!DH:!3DES:!MD5;
127           ssl_prefer_server_ciphers on;
128
129           location /debian {
130                   root   /srv;
131                   autoindex on;
132           }
133
134           location /daily {
135                   root   /srv/dailyiso/;
136                   autoindex on;
137           }
138
139           location / {
140               proxy_set_header X-Real-IP $remote_addr;
141               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
142               proxy_set_header X-Forwarded-Proto https;
143               proxy_set_header Host $http_host;
144               proxy_pass http://ci.grml.org:8080/;
145               proxy_redirect http://ci.grml.org/ https://ci.grml.org/;
146           }
147   }
148   EOF
149
150 SSL-Setup:
151
152   mkdir /etc/nginx/ssl
153   cd /etc/nginx/ssl
154   openssl genrsa -des3 -out server.key 1024
155   openssl req -new -key server.key -out server.csr
156   cp server.key server.key.org
157   openssl rsa -in server.key.org -out server.key
158   openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
159
160   keytool -trustcacerts -import -alias jenkins.grml.org -keystore \
161           /etc/ssl/certs/java/cacerts -storepass changeit -file /etc/nginx/ssl/server.crt
162
163   /etc/init.d/nginx restart
164
165
166 grml-live Jenkins job setup
167 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
168
169   apt-get install grml-live grml-live-addons grml-live-db syslinux imagemagick ipxe
170
171   visudo # add ->
172   jenkins ALL=NOPASSWD: /usr/sbin/cowbuilder, /usr/sbin/chroot
173   jenkins ALL=NOPASSWD: /usr/sbin/grml-live, /usr/sbin/grml2iso, /usr/bin/isohybrid
174   jenkins ALL=NOPASSWD: /srv/release-tools/jenkins-link_latest.sh, /srv/release-tools/install-grml-live, /srv/release-tools/install-grml2usb
175
176 Install dnsmasq to not get a copy of /etc/resolv.conf from the host inside the
177 build chroots but instead query the host:
178
179   apt-get install dnsmasq
180
181 Debian package build jobs setup
182 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
183
184   apt-get install lintian build-essential quilt scons pristine-tar
185
186 To get support for features like '[linux-any]' in Build-Depends update
187 cowbuilder & CO to Debian/wheezy:
188
189   cat > /etc/apt/sources.list.d/wheezy.list << EOF
190   deb http://mirror.siteprotect.eu/debian/ wheezy main contrib non-free
191   EOF
192
193   cat > /etc/apt/preferences.d/wheezy << EOF
194   Package: *
195   Pin: release o=Debian,a=testing,n=wheezy
196   Pin-Priority: 50
197
198   Package: cowbuilder
199   Pin: release o=Debian,a=testing,n=wheezy
200   Pin-Priority: 500
201
202   Package: cowdancer
203   Pin: release o=Debian,a=testing,n=wheezy
204   Pin-Priority: 500
205
206   Package: pbuilder
207   Pin: release o=Debian,a=testing,n=wheezy
208   Pin-Priority: 500
209   EOF
210
211   apt-get update ; apt-get upgrade
212
213
214 How to extend a partition on LVM in LVM
215 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
216
217 The safe approach:
218
219   klaus:   shutdown jenkins
220   klaus:   lvextend -L+5G /dev/mapper/vg0-jenkins--system
221   klaus:   virsh start jenkins
222   jenkins: create new partition in free space
223   jenkins: reboot
224   jenkins: pvcreate /dev/vda3
225   jenkins: vgextend jenkins /dev/vda3
226   jenkins: lvextend -L+3G /dev/jenkins/root
227   jenkins: resize2fs /dev/jenkins/root
228
229 Or instead of creating the new partition use parted to note the partition start,
230 then delete the partition and re-create it with previous partition start and new
231 partition end.