README 13.4 KB
Newer Older
1
2
3
4
5
About jenkins.debian.net
========================
:Author:           Holger Levsen
:Authorinitials:   holger
:EMail:            holger@layer-acht.org
6
:Status:           working, in progress
7
8
9
10
11
12
:lang:             en
:Doctype:          article
:Licence:	   GPLv2

== About jenkins.debian.net

13
https://jenkins.debian.net is a tool for automated quality monitoring of Debian. It is *work in progress* despite being in existence since October 15th 2012.
Holger Levsen's avatar
Holger Levsen committed
14

15
Get the source by running `git clone git://git.debian.org/git/qa/jenkins.debian.net.git`. It's all in there, no (relevant) manual setup has been done besides what's in this git repository. (The irrelevant bits are some very simple configuration files containing passwords.)
Holger Levsen's avatar
Holger Levsen committed
16

17
The (virtualized) hardware is sponsored since October 2012 by http://www.profitbricks.co.uk - currently it's using 23 cores and 75 GB memory, thanks a lot!
Holger Levsen's avatar
Holger Levsen committed
18

Holger Levsen's avatar
Holger Levsen committed
19
Some stats are available using link:https://jenkins.debian.net/munin/jenkins-month.html[munin-plugins for jenkins].
20

21
== Getting involved
22

Philip Hands's avatar
Philip Hands committed
23
jenkins.debian.net is intended to be a QA resource for the whole Debian project. Please contact us (via #debian-qa on IRC or via the debian-qa mailinglist) If you / your project is interested to run tests in this setup!
24
25

If you notice some jobs has problems and you want to find out why, read <<debug,debug certain jobs>> to learn how to do debug jobs locally.
26

27
28
include::CONTRIBUTING[]

29
30
== Notifications

Philip Hands's avatar
Philip Hands committed
31
There are two types of notifications being used: email and IRC. At the end of each builds console log it says to where notifications have been sent. An address of the form 'jenkins-foo' means an IRC notification has been sent to the #foo IRC channel.
32

33
34
All job result notifications should be sent to https://lists.alioth.debian.org/mailman/listinfo/qa-jenkins-scm and optionally to other recipients as well.

35
36
== Jobs being run

37
There are over 400 jobs being run currently. If you can think of ways to improve the usefulness of certain jobs, please do give feedback!
38

39
=== g-i-installation jobs
Holger Levsen's avatar
Holger Levsen committed
40

41
42
Installation tests with g-i, the graphical version of d-i, the debian-installer.

Holger Levsen's avatar
update    
Holger Levsen committed
43
44
* 'g-i-installation_debian_sid_daily-rescue'
** boot of rescue system with daily build sid image
45

46
* 'g-i-installation_debian_sid_daily-lxde' and '-xfce' and '-kfreebsd' and '-hurd'
47
** sid installation of Xfce/LXDE desktop with daily build sid image
Holger Levsen's avatar
update    
Holger Levsen committed
48

Holger Levsen's avatar
Holger Levsen committed
49
50
51
52
53
* 'g-i-installation_debian_jessie_lxde','-xfce','-kde' and '-gnome' and '-kfreebsd'
** jessie installation of Xfce/LXDE/KDE desktop and kfreebsd install with weekly build jessie image

* 'g-i-installation_debian_wheezy_lxde','-xfce','-kde' and '-gnome' and '-kfreebsd'
** wheezy installation of Xfce/LXDE/KDE desktop and kfreebsd install with wheezy release image
54
55
56

=== debian-installer jobs

Holger Levsen's avatar
Holger Levsen committed
57
* 'd_i_build_$source_package'
Holger Levsen's avatar
Holger Levsen committed
58
59
** there is one job for each git repo referred to in http://anonscm.debian.org/viewvc/d-i/trunk/.mrconfig?view=co
** each job pdebuilds the master branch of its git repo on every git push in a sid environment. (If the architecture(s) specified in debian/control are not amd64,all or any the build exits cleanly.)
60
** while these jobs are triggered on commits, the SCM is only polled every 6min to see if there are new commits.
Holger Levsen's avatar
Holger Levsen committed
61

Holger Levsen's avatar
Holger Levsen committed
62
* 'd_i_manual'
63
** builds the full installation-guide package with pdebuild in sid on every commit to svn://anonscm.debian.org/svn/d-i/ matching suitable patterns.
64
** while this job is triggered on commits, the SCM is only polled every 15min to see if there are new commits.
Holger Levsen's avatar
Holger Levsen committed
65

Holger Levsen's avatar
Holger Levsen committed
66
* 'd_i_manual_$language_html'
67
** builds a language (on jessie) on every commit of svn/trunk/manual/$LANG with `make languages=$LANG architectures=amd64 formats=html`.
68
** while these jobs are triggered on commits, the SCM is only polled every 15min to see if there are new commits.
Holger Levsen's avatar
Holger Levsen committed
69
** on successful build, 'd_i_manual_$lang_pdf' is triggered.
Holger Levsen's avatar
Holger Levsen committed
70

Holger Levsen's avatar
Holger Levsen committed
71
* 'd_i_parse_build_logs' - parses logs from http://d-i.debian.org/daily-images/build-logs.html daily, to give them a bit more exposure.
72
** this job is run daily.
Holger Levsen's avatar
Holger Levsen committed
73

74
=== chroot-installation jobs
75

76
77
Installation tests inside chroot environments.

78
* 'chroot-installation_maintenance_$distro':
79
** make sure chroots have been cleaned up properly
80
81
82
** runs daily at 05:00 UTC and triggers the $distro specific bootstrap job on success
** wheezy is only triggered on the 4th day and 18th of each month (as it was released on the 4th)
** squeeze only on the 25th of each month
83
84
* $distro-bootstrap jobs:
** just `debootstrap $distro` (install a base Debian distribution $distro)
85
** there is one job for *sid*, one for *wheezy* and one for *jessie*: 'chroot-installation_sid_bootstrap', 'chroot-installation_wheezy_bootstrap' and 'chroot-installation_jessie_bootstrap'
86
* plus there is 'chroot-installation_squeeze_bootstrap_upgrade_to_wheezy', which bootstraps *squeeze* and upgrades that to *wheezy*
87
88
** on successful run of the bootstrap job, six $distro-install(+upgrade) jobs are triggered.

89
90
* FIXME: describe upgrade jobs here too

91
92
* $distro-install jobs (and $distro-install+upgrade jobs):
** `debootstrap $distro`, install a *$set_of_packages* (and upgrade to *$2nd_distro*)
Holger Levsen's avatar
Holger Levsen committed
93
** these $set_of_packages exist: 'gnome', 'kde', 'kde-full', 'lxde', 'xfc', 'full_desktop' (all five desktops plus `vlc evince iceweasel chromium cups build-essential devscripts wine texlive-full asciidoc vim emacs` and (`libreoffice virt-manager mplayer2` (jessie/sid) or `openoffice virtualbox mplayer` (squeeze/wheezy)) and 'develop'
94
*** install is done with `apt-get install`, except for 'develop' where `apt-get build-dep` is used to install the build dependencies of these packages.
Holger Levsen's avatar
Holger Levsen committed
95

96
97
98
99
=== Debian Edu related jobs

* All Debian Edu related jobs can be seen at these two URLs:
** https://jenkins.debian.net/view/edu_devel/ about Debian Edu Jessie
Holger Levsen's avatar
Holger Levsen committed
100
** https://jenkins.debian.net/view/edu_stable/ about Debian Edu Wheezy
101
102

* Then there are three types of jobs:
Holger Levsen's avatar
Holger Levsen committed
103
** 'g-i-installation_$(distro)_$(profile)':
104
105
106
*** tests installation of a profile with preseeding in the graphical installer,
*** screenshots and logs are preserved and a movie created,
*** testing clients against the main-server is planned too, for some time...
Holger Levsen's avatar
Holger Levsen committed
107
** 'chroot-installation_$(distro)_install_$(education-metapackage)':
Philip Hands's avatar
Philip Hands committed
108
*** tests apt installation of a metapackage in a specific distro.
Holger Levsen's avatar
Holger Levsen committed
109
* 'edu-packages_$(distro)_$(src-package)':
110
111
112
** builds one of the six debian-edu packages ('debian-edu', 'debian-edu-config', 'debian-edu-install', 'debian-edu-doc', 'debian-edu-artwork', 'debian-edu-archive-keyring' on every push to it's git master branch
** and whenever 'debian-edu-doc' is build, https://jenkins.debian.net/userContent/debian-edu-doc/ get's updated automatically afterwards too.

Mattia Rizzolo's avatar
Mattia Rizzolo committed
113
114
115
116
117
118
119
120
121
=== qa.debian.org related jobs

* There are jobs for lintian and for piuparts:
** they simply run a build and/or the tests of the master branch of their git repository on every commit against sid. If that succeeds, the same source will be built on jessie and then (only for lintian) on wheezy.
* There are also jobs related to link:https://udd.debian.org[UDD]:
** they check for multiarch version screws in various suites or issues with orphaned packages without the correct the relevant bug.
*** the UDD schema is available at https://udd.debian.org/schema/udd.html
* Last but not least, dpkg related jobs:
** they tests for trigger cycles using data from the archive and http://binarycontrol.debian.net
122
123
124

=== haskell jobs

125
* See https://wiki.debian.org/Haskell for more information about those jobs.
126
127
128

=== rebootstrap jobs

129
* See https://wiki.debian.org/HelmutGrohne/rebootstrap for more information about these jobs.
130

Holger Levsen's avatar
Holger Levsen committed
131
=== reproducible builds jobs
132

133
* See https://wiki.debian.org/ReproducibleBuilds to learn more about "Reproducible Builds" in Debian and beyond.
134

135
* Several jobs are being used to assemble the website https://reproducible.debian.net which is actually a collection of static html and log files (and very few images) being served from this host. Besides the logfiles data is stored in an SQLite database which can be downloaded from https://reproducible.debian.net/reproducible.db. (That copy is updated every four hours.)
136

Holger Levsen's avatar
Holger Levsen committed
137
* The (current) purpose of https://reproducible.debian.net is to show the prospects of reproducible builds for Debian. IOW: this is research, showing what could (and should) be done... check https://wiki.debian.org/ReproducibleBuilds for the real status of the project!
138

139
* Currently, three suites are tested on amd64: 'testing', 'unstable' and 'experimental'. The tests are done using 'pbuilder' using link:https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain[our toolchain] through eight concurrent builder jobs which are each constantly testing packages and saving the results of these tests.
Holger Levsen's avatar
Holger Levsen committed
140

141
* Packages to be build are scheduled in the SQLite database via a scheduler job, which runs every hour and which schedules "new packages" to be tested if the queue is below a certain threshold. New packages" in this context means:
Philip Hands's avatar
Philip Hands committed
142
** truly new packages (either uploaded to 'unstable' or 'experimental' or migrated to 'testing'),
143
** new versions of existing packages.
Holger Levsen's avatar
Holger Levsen committed
144

145
* If the scheduling queue is low, already tested package will be scheduled for re-testing.
146

147
* Several other jobs exist to build the html pages and to create a JSON file which can be downloaded from https://reproducible.debian.net/reproducible.json.
148

149
* Information from https://anonscm.debian.org/cgit/reproducible/notes.git is incorporated on pushes to that git repo.
150

Philip Hands's avatar
Philip Hands committed
151
* There are suite specific jobs to create the pbuilder base.tgz's per suite, which have the reproducible apt repo added. Similarly there's another job per suite to create the schroots used by the builder jobs to download the packages sources to build.
152

Philip Hands's avatar
Philip Hands committed
153
* Then there are two more jobs to create sid and testing schroots to run debbindiff on the the two results. This is necessary since to investigate haskell binaries, debbindiff needs access to the same haskell compiler version as the investigated packages have been built with.
154
155
156

* Finally, there is a maintenance job running every 4h, making sure things are considerably under control.

157
158
* The jenkins job overview at https://jenkins.debian.net/view/reproducible/ probably makes it clearer how the job scheduling works in practice.

159
160
161
162
163
* If you are in the reproducible team you can reschedule packages by yourself:
** log into alioth.debian.org, in the team home (/home/groups/reproducible/) there is a reschedule.sh script you can call. Use the --help switch to get the online help.
** The team IRC channel will get a notification both when the scheduling is done and once the build finishes.

* If you are not in the reproducible team or if you want to reschedule big sets of packages please ask for a manual rescheduling in the '#debian-reproducible' IRC channel on OFTC. Those with shell access to jenkins need to run this command:
164
165

----
166
jenkins@jenkins:~$ /srv/jenkins/bin/reproducible_schedule_on_demand.sh --$option $suite $package1 $package2
167
----
168

169
The script can be called with either one of the two options: with "--artifacts" the build job will preserve the produced packages and publish them under reproducible.debian.net, to allow easy+deeper investigation of reproducible issues. The URL is published in the build log and on IRC.
Philip Hands's avatar
Philip Hands committed
170
Alternatively it's possible to use "--notify" to make the build job notify the team IRC channel when a package finishes building.
171

Philip Hands's avatar
Philip Hands committed
172
* Blacklisting packages can be done similarly:
173
174

----
175
jenkins@jenkins:~$ /srv/jenkins/bin/reproducible_blacklist.sh $suite $package1
176
177
----

178
* Job configuration is at the usual location for 'jenkins.debian.net' - there's a 'job-cfg/reproducible.yaml' defining all the jobs and lots of scripts in 'bin/reproducible_*.(sh|py)', plus a few config files like for 'sudo' or 'apache2'.
179

180
181
=== dvswitch jobs

182
183
184
185
* There are three jobs currently:
** 'dvswitch_sid' and 'dvswitch_jessie' build the master branch of dvswitch against that environment.
** while 'dvswitch_against_libav_git' builds the master branch of dvswitch using libav also build from it's master branch. This is done in an sid environment.
** Except for 'dvswitch_jessie' which is triggered by a successful 'dvswitch_sid' run, the jobs are triggered by git commits.
186

187
=== jenkins.d.n jobs
Holger Levsen's avatar
Holger Levsen committed
188
189
190

These are jobs for making sure jenkins.debian.net is running smoothly.

191
192
193
194
195
[[debug]]
== Debugging certain jobs

*FIXME*: To debug certain jobs, a jenkins setup is actually not needed. Make this easy and describe here.

Philip Hands's avatar
Philip Hands committed
196
* This is work in progress too, but mostly just needs documentation!* In principle the shell commands from the various jobs should run on any Debian system just fine. Please use a test system though, as all your data might be eaten.
197

198
* Build this source as a debian package and install the jenkins.d.n-debug package and all it's recommends.
199

Holger Levsen's avatar
Holger Levsen committed
200
201
=== Feedback

202
I love to get feedback on this! Either by sending an email to debian-qa@lists.debian.org or by joining #debian-qa on irc.debian.org and expressing yourself there. The best way is to link:https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=jenkins;users=qa.debian.org%40packages.debian.org[report bugs], even better if accompanied by patches or pull requests. But really, all feedback is appreciated!
Holger Levsen's avatar
Holger Levsen committed
203
204
205

=== Setup

Holger Levsen's avatar
Holger Levsen committed
206
See link:https://jenkins.debian.net/userContent/setup.html[INSTALL].
Holger Levsen's avatar
Holger Levsen committed
207
208
209

=== ToDo

Holger Levsen's avatar
Holger Levsen committed
210
There is still a lot of work left, check the current link:https://jenkins.debian.net/userContent/todo.html[ToDo list].
Holger Levsen's avatar
Holger Levsen committed
211

212
213
214
=== Thanks

See link:https://jenkins.debian.net/userContent/thanks.html[THANKS].
Holger Levsen's avatar
Holger Levsen committed
215

216
== License
217

218
219
220
221
* everything except features and bin/libvirt_cucumber_tests:
** GPLv2, see link:http://anonscm.debian.org/cgit/qa/jenkins.debian.net.git/LICENSE[LICENSE].
* features and bin/libvirt_cucumber_tests:
** GPLv3+
222

Holger Levsen's avatar
Holger Levsen committed
223
// vim: set filetype=asciidoc: