dotted principal names can be used with -allow-dotted-principals
[openafs-wiki.git] / AFSLore / buildbotmasternotes.mdwn
1 There are Jason's notes for setting up the buildbot master
2
3 The buildbot master was installed in a VM on debian lenny. The VM has the following configuration:
4 * 10GB disk (partitions: 3GB root, 500MB swap, the rest for /home
5 * RAM 384MB
6
7 When installing lenny, uncheck desktop system and check web server
8
9 edit sources.list and comment out the cdrom source
10
11 root# apt-get build-dep buildbot
12 root# apt-get install git-core
13 root# apt-get install openssh-server
14
15 login as buildmaster user
16 % git clone git://github.com/jaysoffian/buildbot.git  buildbot-src
17 % cd buildbot-src/
18 % git checkout -b gerrit e4c0d458374b9a0ce34c
19
20 // fix a debugclient bug
21 % git cherry-pick 9ab140a03378baa5ec98
22
23 // allow for not clobbering the git tree each build
24 % git cherry-pick 7fa5137bbc449144d76334bd366920d8b6a7c2c0
25
26 // following 
27 http://buildbot.net/buildbot/docs/0.8.1/Installing-the-code.html#Installing-the-code
28 // follow 8.1 docs
29 % python setup.py build
30 root# python setup.py install
31 root# apt-get install python-json 
32 root# apt-get install python-jinja
33
34 // cvs is required to make the buildbot test suite go all clear
35 root# apt-get install cvs
36
37 // run the unit tests
38 % PYTHONPATH=. trial buildbot.test
39
40 % mkdir $HOME/buildbot/master/openafs
41 // create the buildbot master
42 % buildbot create-master $HOME/buildbot/master/openafs
43
44 edit config
45 =========================================
46 ...
47 repourl="git://git.openafs.org/openafs.git"
48
49 from buildbot.process import factory
50 from buildbot.steps.source import Git
51 from buildbot.steps.shell import Compile
52 from buildbot.steps.shell import Configure
53
54 f1 = factory.BuildFactory()
55 f1.addStep(Git(repourl=repourl, mode="clobber"))
56 f1.addStep(Configure(command=["sh","regen.sh"]))
57 f1.addStep(Configure(command=["./configure","--enable-checking"]))
58 f1.addStep(Compile(command=["make"]))
59 f1.addStep(Compile(command=["make","dest"]))
60
61 b1 = {'name': "buildbot-full",
62       'slavename': "debian-i386",
63       'builddir': "full",
64       'factory': f1,
65       }
66 c['builders'] = [b1]
67 ...
68 =================================================
69
70 // test config
71 % buildbot checkconfig master.cfg
72 // start the buildmaster
73 % /usr/bin/buildbot start $HOME/buildbot/master/openafs
74
75 check http://localhost:8010 for web output
76
77
78 //install openafs builddeps
79 root# apt-get build-dep openafs
80 root# apt-get install automake1.9 linux-headers-2.6-686 flex bison dblatex docbook-xsl
81
82 root# useradd  -d /home/buildslave -m buildslave
83
84 buildslave% mkdir -p $HOME/buildbot/slave/openafs
85 buildslave% buildbot create-slave $HOME/buildbot/slave/openafs localhost:9989 debian-i386 PASSWORD
86
87 edit files in /home/buildslave/buildbot/slave/openafs/info
88
89 // start the buildslave
90 buildslave% buildbot start $HOME/buildbot/slave/openafs  
91
92
93
94 /// begin setting up gerrit stuff
95 // create ssh key for buildbot
96 // sign in to gerrit and add buildbot ssh key
97 buildmaster% touch ~buildmaster/buildbot-src/contrib/__init__.py
98
99 Here is a working config snippet (minus the slave passwords) for gerrit+buildbot:
100 ============================
101 import sys
102 sys.path.append('/home/buildmaster/buildbot-src/contrib')
103
104 from gerrit import GerritChangeSource
105 #c['change_source'] = GerritChangeSource()
106
107 ## configure the Schedulers
108
109 from buildbot.scheduler import Scheduler, Periodic
110
111 mybuilders = []
112 mybuilders.append("debian-linux-i386-builder")
113 mybuilders.append("win2008-builder")
114
115 stable14_builders = []
116 stable14_builders.append("debian-linux-i386-builder")
117
118
119
120 c['schedulers'] = []
121 c['schedulers'].append(Scheduler(name="all", branch=None,
122                                  treeStableTimer=30,
123                                  builderNames=mybuilders))
124
125
126 c['schedulers'].append(Periodic("every_4_hours", ["irix-builder"], 4*60*60))
127
128 from gerrit import GerritScheduler
129 c['schedulers'].append(GerritScheduler("gerrit_scheduler", mybuilders, branches=["master","openafs-devel-1_5_x"]))
130
131 c['schedulers'].append(GerritScheduler("gerrit_stable_scheduler", stable14_builders, branches=["openafs-stable-1_4_x"]))
132
133 ####### BUILDERS
134
135 repourl="git://git.openafs.org/openafs.git"
136
137 from buildbot.process import factory
138 from buildbot.steps.source import Git
139 from buildbot.steps.shell import Compile
140 from buildbot.steps.shell import Configure
141 from buildbot.steps.shell import ShellCommand
142
143 f1 = factory.BuildFactory()
144 #f1.addStep(ShellCommand(command=["git","clean","-xdf"]))
145 #f1.addStep(Git(repourl=repourl, mode="clobber"))
146 f1.addStep(ShellCommand(command=["sleep","120"]))
147 f1.addStep(Git(repourl=repourl, mode="update", ignore_ignores=True, retry=[120,60]))
148 f1.addStep(ShellCommand(command=["sh","regen.sh"]))
149 f1.addStep(Configure(command=["./configure","--enable-checking","--enable-supergroups","--enable-namei-fileserver"]))
150 f1.addStep(Compile(command=["make"]))
151 f1.addStep(ShellCommand(command=["make","dest"]))
152
153 b1 = {'name': "debian-linux-i386-builder",
154       'slavename': "debian-i386",
155       'builddir': "full",
156       'factory': f1,
157       }
158
159 c['builders'] = [b1]
160
161 irix_configure_env={'CC':"cc"}
162
163 irixfactory = factory.BuildFactory()
164 irixfactory.addStep(ShellCommand(command=["sleep","120"]))
165 irixfactory.addStep(Git(repourl=repourl, mode="update", ignore_ignores=True, retry=[120,60]))
166 irixfactory.addStep(ShellCommand(command=["sh","regen.sh"]))
167 irixfactory.addStep(Configure(command=["./configure","--enable-checking","--enable-supergroups","--enable-namei-fileserver","--with-krb5=/usr/nekoware"],env=irix_configure_env))
168 irixfactory.addStep(Compile(command=["gmake"]))
169 irixfactory.addStep(ShellCommand(command=["make","dest"]))
170
171
172 irixbuilder = {'name': "irix-builder",
173       'slavename': "sgi_irix_65-64bit",
174       'builddir': "irix-65-64bit",
175       'factory': irixfactory,
176       }
177
178 c['builders'].append(irixbuilder)
179
180
181 ###### win_amd64 free builder
182
183 win_amd64_free_factory = factory.BuildFactory()
184
185 # wait for 2 minutes
186 win_amd64_free_factory.addStep(ShellCommand(command=["ping","-n","120","localhost"]))
187 win_amd64_free_factory.addStep(Git(repourl=repourl, mode="update", ignore_ignores=True, retry=[120,60]))
188 win_amd64_free_factory.addStep(Compile(command=["build-openafs.cmd", "amd64", "free"]))
189
190 win_amd64_free_builder = {'name': "win2008-builder",
191       'slavename': "win2008-amd64",
192       'builddir': "win-amd64-free",
193       'factory': win_amd64_free_factory,
194       }
195 c['builders'].append(win_amd64_free_builder)
196
197 ####### STATUS TARGETS
198
199 # 'status' is a list of Status Targets. The results of each build will be
200 # pushed to these targets. buildbot/status/*.py has a variety to choose from,
201 # including web pages, email senders, and IRC bots.
202
203 c['status'] = []
204
205 # Use allowForce=True (boolean, not a string. ie: not 'True') to allow
206 # Forcing Builds in the Web User Interface. The default is False.
207 from buildbot.status import html
208 c['status'].append(html.WebStatus(http_port=8010,allowForce=True))
209
210 from gerrit import GerritStatusPush
211 c['status'].append(GerritStatusPush('gerrit-prod'))
212
213
214 from buildbot.status import client
215 c['status'].append(client.PBListener(9988))
216
217
218 ####### PROJECT IDENTITY
219 c['projectName'] = "OpenAFS"
220 c['projectURL'] = "http://www.openafs.org/"
221 c['buildbotURL'] = "http://buildbot.openafs.org:8010/"
222
223 ======================================================