Mercurial > treepkg
annotate README @ 570:44c0f8404983
Refactor git pull command out of update
Tag MUST NOT use update because therefore it always changes the current local branch!
For listing the tags it's enough to pull the latest repo changes
author | Bjoern Ricks <bricks@intevation.de> |
---|---|
date | Fri, 02 Sep 2011 11:46:29 +0000 |
parents | 092925ff75d7 |
children |
rev | line source |
---|---|
42 | 1 README for TreePackager |
2 ======================= | |
3 | |
4 | |
321
092925ff75d7
Added basic Git support, configuration options:
Andre Heinecke <aheinecke@intevation.de>
parents:
109
diff
changeset
|
5 TreePackager is a tool to automatically build debian packages. |
42 | 6 |
7 | |
8 Prerequisites | |
9 ------------- | |
10 | |
11 You need the following software to run TreePackager. In the list below, | |
12 parentheses contain the name of the corresponding package in Debian Etch | |
13 if its not the same as the software. The version required is usually | |
14 the one from debian etch. | |
15 | |
16 Python 2.4 (python2.4-minimal) | |
17 Debian devscripts (devscripts) | |
18 subversion | |
19 pbuilder | |
321
092925ff75d7
Added basic Git support, configuration options:
Andre Heinecke <aheinecke@intevation.de>
parents:
109
diff
changeset
|
20 git-core |
42 | 21 sudo |
22 bzip2 | |
23 | |
24 For the web front-end you also need the following software: | |
25 | |
26 Genshi (python-genshi) | |
27 CherryPy (python-cherrypy) | |
28 | |
29 Some of the packagers require additional software. The KDEPIM | |
30 enterprise branch packagers require the following additional software: | |
31 | |
32 autoconf2.13 | |
33 automake1.9 | |
34 | |
35 | |
36 Installation | |
37 ------------ | |
38 | |
39 You can run the tree packager itself directly from the source tree. | |
40 However, you need to configure it first and setup pbuilder. | |
41 | |
42 | |
43 Configuration | |
44 ------------- | |
45 | |
46 To understand the configuration, first a few notes about the | |
47 architecture of TreePackager. The TreePackager consist of one program | |
48 that periodically updates svn working directories and if something has | |
49 changed, builds a new debian package from the working directory. The | |
50 program should run as a normal user. The sample configuration assumes | |
51 that it's the user "builder" with a home directory "/home/builder". The | |
52 default configuration manages a directory tree under | |
53 "/home/builder/enterprise". | |
54 | |
55 The binary packages are built with pbuilder. Because pbuilder uses a | |
56 chroot environment to build the packages, it must be run as root. The | |
57 tree packager therefore needs a way to run pbuilder as root even though | |
58 itself runs as a non-root user. By default the tree packager uses sudo, | |
59 so you have to setup sudo to allow the tree packager user to invoke | |
60 pbuilder without a password. This can be accomplished with the | |
61 following line in /etc/sudoers (using the default user name): | |
62 | |
63 builder ALL = NOPASSWD: /usr/sbin/pbuilder | |
64 | |
65 | |
66 Configure TreePackager | |
67 ~~~~~~~~~~~~~~~~~~~~~~ | |
68 | |
69 The file demo.cfg contains example configuration that contains most of | |
70 what is needed to package KDEPIM and kde-i18n from the KDEPIM enterprise | |
71 branch. Copy this file to treepkg.cfg and adapt it to your needs. The | |
71
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
72 comments in the file should provide most of the hints to get you |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
73 started. Some more information is in the "Configuring a packager" |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
74 section below. |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
75 |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
76 |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
77 Configuring a packager |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
78 ~~~~~~~~~~~~~~~~~~~~~~ |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
79 |
73 | 80 The configuration file contains one section for each packager. The |
71
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
81 section name starts with a "pkg_" prefix. The possible options are |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
82 described in demo.cfg. However there are some things that need to be |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
83 set up outside of the config file. |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
84 |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
85 Each packager has a base directory (the base_dir option in the |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
86 corresponding pkg_-section). One thing needed by a packager is the |
72 | 87 contents of the debian sub-directory of the debian source package. When |
88 creating the source package, the packager simply copies the | |
89 sub-directory "debian" of the base_dir into the directory making up the | |
90 source tree. How the debian directory is created and maintained is up | |
91 to you. Usually it's a good idea to start with the debian sub-directory | |
92 an existing debian package for the software. | |
42 | 93 |
108
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
94 Once you have configured the packagers, you can create their directories |
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
95 with |
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
96 |
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
97 bin/inittreepkg.py |
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
98 |
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
99 This will create base directories of each packager and report some |
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
100 missing steps that will have to be done manually, like creating a debian |
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
101 subdirectory with the debian packaging information. |
91deff3db739
Add note about bin/inittreepkg.py to README
Bernhard Herzog <bh@intevation.de>
parents:
78
diff
changeset
|
102 |
42 | 103 |
104 Configure pbuilder | |
105 ~~~~~~~~~~~~~~~~~~ | |
106 | |
50
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
107 It's best to give the tree packager its own pbuilder configuration and |
72 | 108 directories. The default configuration uses a "pbuilder" sub-directory |
50
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
109 in /home/builder/enterprise. If you have created the treepkg.cfg file |
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
110 with at least one packager and the correct root_cmd and pbuilderrc |
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
111 options (the defaults for both should be OK if you use sudo as described |
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
112 above), you can create the directories, the pbuilder configuration and |
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
113 the chroot environment with the script initpbuilder.py like this: |
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
114 |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
115 bin/initpbuilder.py --mirrorsite=<URL of preferred debian mirror> |
50
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
116 |
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
117 You can specify some more mirrors with the --othermirror option. For |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
118 more information run "bin/initpbuilder.py --help" and consult the pbuilder |
50
225206553bba
update README part about pbuilder config
Bernhard Herzog <bh@intevation.de>
parents:
42
diff
changeset
|
119 documentation. |
42 | 120 |
121 | |
122 Configure the web front-end | |
123 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
124 | |
70
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
125 The web front-end consists of a single HTML-page with an overview of the |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
126 packager status and links to build logs when available. There are two |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
127 ways to publish this front-end: as little web-server with a dynamic |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
128 web-page or as a directory with a bunch of files making up a static |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
129 web-site. |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
130 |
72 | 131 Web-server: |
70
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
132 |
42 | 133 The default configuration should be OK in most cases. If you want you |
134 can customize it in cherrypy.cfg. Start the web front-end with | |
135 | |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
136 bin/starttreepkgweb.py |
42 | 137 |
138 starttreepkgweb has some options to specify which configuration files to use. | |
70
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
139 |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
140 |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
141 Static pages: |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
142 |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
143 The static pages are published using two programs, createstaticweb.py |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
144 and publishstaticweb.py. createstaticweb.py is run on the system where |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
145 the tree packager runs. publishstaticweb.py is usually run on another |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
146 system and connects via ssh and rsync to the tree packager host, creates |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
147 the files with createstaticweb.py and copies the files from the tree |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
148 packager host to a third host. |
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
149 |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
150 The configuration file for publishstaticweb.py is demostaticweb.cfg. |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
151 Copy this file to staticweb.cfg and adapt it to your system. The |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
152 comments in the file describe the options. Afterwards, run the script |
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
153 with |
70
4b537aadc5ce
add README section for the static web-page config
Bernhard Herzog <bh@intevation.de>
parents:
69
diff
changeset
|
154 |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
155 bin/publishstaticweb.py |
71
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
156 |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
157 |
109
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
158 Notification Mails |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
159 ~~~~~~~~~~~~~~~~~~ |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
160 |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
161 The tree packager can send notification mails when a built fails. This |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
162 works in a two-step process like the creation of the static web-pages. |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
163 The sample configuration file for the notification mails is |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
164 demonotification.cfg. Copy it to notification.cfg and adapt it to your |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
165 needs. The comments in the file describe the options. In particular |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
166 you will want to customize the template for the notification mail to |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
167 include suitable email addresses. To actually send notifications, run |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
168 |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
169 bin/sendnotificationmails.py |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
170 |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
171 Note that this only tries to send mails when a build has failed. |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
172 |
fbfa1abb47f1
Add note about notificatin mails to README
Bernhard Herzog <bh@intevation.de>
parents:
108
diff
changeset
|
173 |
71
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
174 Running the Tree Packager |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
175 ------------------------- |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
176 |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
177 After configuration, run the tree packager with |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
178 |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
179 bin/runtreepkg.py [options] [packager...] |
71
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
180 |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
181 For each packager listed on the command line -- or all configured |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
182 packagers if none are given -- the tree packager checks out or updates |
71
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
183 the sources and builds binary packages if the new revision hasn't been |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
184 packaged yet. |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
185 |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
186 If the option --once has been given, the tree packager exits after it |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
187 has checked each packager once. Without it, the check is done |
78
9a602d8eaa60
initial revision of the subversion repository
Thomas Arendsen Hein <thomas@intevation.de>
parents:
73
diff
changeset
|
188 repeatedly. The interval between two checks can be set in the configuration |
71
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
189 file. |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
190 |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
191 Call runtreepkg.py with the --help option to see a list of the available |
2eefd12526ff
flesh out the REAME file some more
Bernhard Herzog <bh@intevation.de>
parents:
70
diff
changeset
|
192 options. |