Mercurial > treepkg
view README @ 440:383d23c6bfde
Merged revisions 346-386 via svnmerge from
svn+ssh://svn.wald.intevation.org/treepkg/branches/treepkg-status
........
r346 | bricks | 2010-07-07 17:40:48 +0200 (Mi, 07 Jul 2010) | 2 lines
added classed for treepkg status xml generation
........
r347 | bricks | 2010-07-08 12:07:39 +0200 (Do, 08 Jul 2010) | 10 lines
renamed new status dir to info because of a naming conflict with status.py
let the user specify a treepkg name in the config
the name is propagated to PackagerGroup
[treepkg]
name: <treepkgname>
becomes:
pg = PackagerGroup(...)
pg.name
........
r348 | bricks | 2010-07-08 15:25:07 +0200 (Do, 08 Jul 2010) | 3 lines
moved test file to test main dir
fixed missing : after def statement
........
r349 | bricks | 2010-07-08 17:59:52 +0200 (Do, 08 Jul 2010) | 2 lines
added treepkg_dir andd tracks_dir attributes to PackageGroup
........
r350 | bricks | 2010-07-08 18:00:32 +0200 (Do, 08 Jul 2010) | 2 lines
changed <millpath> to <trackspath>
........
r351 | bricks | 2010-07-08 18:08:39 +0200 (Do, 08 Jul 2010) | 2 lines
check if config file exists to get usefull error output
........
r352 | bricks | 2010-07-08 18:11:13 +0200 (Do, 08 Jul 2010) | 2 lines
write first info about tracks
........
r353 | bricks | 2010-07-09 12:20:49 +0200 (Fr, 09 Jul 2010) | 2 lines
get all log files
........
r354 | bricks | 2010-07-09 14:42:42 +0200 (Fr, 09 Jul 2010) | 2 lines
added md5sum function
........
r355 | bricks | 2010-07-09 15:15:15 +0200 (Fr, 09 Jul 2010) | 4 lines
implemented nearly all info
only arch and os info are missing
........
r356 | bricks | 2010-07-09 16:19:17 +0200 (Fr, 09 Jul 2010) | 2 lines
Bugfix: source was not defined
........
r357 | bricks | 2010-07-09 16:44:52 +0200 (Fr, 09 Jul 2010) | 3 lines
fixed some typos
added missing add_checksum methond
........
r358 | bricks | 2010-07-09 17:06:15 +0200 (Fr, 09 Jul 2010) | 2 lines
fixed status line for revision
........
r359 | bricks | 2010-07-12 14:10:34 +0200 (Mo, 12 Jul 2010) | 2 lines
let the user specify num revisions that should be shown in the info
........
r360 | bricks | 2010-07-12 14:21:39 +0200 (Mo, 12 Jul 2010) | 2 lines
missed in last commit
........
r361 | bricks | 2010-07-12 17:06:22 +0200 (Mo, 12 Jul 2010) | 2 lines
add os config statement
........
r362 | bricks | 2010-07-12 17:47:42 +0200 (Mo, 12 Jul 2010) | 3 lines
moved packages and logs to revision tag
implemented os and arch info
........
r363 | bricks | 2010-07-13 14:23:28 +0200 (Di, 13 Jul 2010) | 2 lines
updated test readconfig for os config variable
........
r364 | bricks | 2010-07-13 14:24:14 +0200 (Di, 13 Jul 2010) | 2 lines
moved common publish functions to a seperate module
........
r365 | bricks | 2010-07-13 16:26:11 +0200 (Di, 13 Jul 2010) | 2 lines
moved arch info to each package info
........
r366 | bricks | 2010-07-13 18:46:17 +0200 (Di, 13 Jul 2010) | 2 lines
inital checkin for new publishpackages processing
........
r367 | bricks | 2010-07-21 17:52:15 +0200 (Mi, 21 Jul 2010) | 2 lines
implemented parsing from xml string
........
r368 | bricks | 2010-07-22 12:17:42 +0200 (Do, 22 Jul 2010) | 2 lines
copy binary-all packages in all binary-xyz dirs
........
r369 | bricks | 2010-07-22 12:26:40 +0200 (Do, 22 Jul 2010) | 2 lines
fixed small bugs
........
r370 | bricks | 2010-07-22 13:02:36 +0200 (Do, 22 Jul 2010) | 2 lines
added a new root element which is called TreepkgRoot for Treepkg Info classes
........
r371 | bricks | 2010-07-22 13:09:52 +0200 (Do, 22 Jul 2010) | 3 lines
fixed some small issues
remember: run pychecker BEFORE the commit
........
r372 | bricks | 2010-07-22 18:01:43 +0200 (Do, 22 Jul 2010) | 2 lines
improved publishdebianpackages and fixed a lot of bugs in the xml info parsing part
........
r373 | bricks | 2010-07-23 18:40:38 +0200 (Fr, 23 Jul 2010) | 2 lines
implemented CacheDb to store copied Packages from build host
........
r374 | bricks | 2010-07-26 10:28:48 +0200 (Mo, 26 Jul 2010) | 2 lines
moved data handling in publishdebianpackages into seperate module
........
r375 | bricks | 2010-07-26 11:42:07 +0200 (Mo, 26 Jul 2010) | 2 lines
fixed some typos
........
r376 | bricks | 2010-07-26 12:12:40 +0200 (Mo, 26 Jul 2010) | 2 lines
first version of incremental copying debian packages to cachedir
........
r377 | bricks | 2010-07-26 14:58:50 +0200 (Mo, 26 Jul 2010) | 2 lines
incremental copying only changed debian packages
........
r378 | bricks | 2010-07-26 15:39:10 +0200 (Mo, 26 Jul 2010) | 3 lines
use md5 instead of hashlib module
(md5 is deprecated in favour of hashlib in python 2.5)
........
r379 | bricks | 2010-07-26 15:46:19 +0200 (Mo, 26 Jul 2010) | 2 lines
make treepkg compatible to python 2.4
........
r380 | bricks | 2010-07-26 15:50:49 +0200 (Mo, 26 Jul 2010) | 2 lines
fixed last commit (db instead of sqlite3)
........
r381 | bricks | 2010-07-27 10:54:15 +0200 (Di, 27 Jul 2010) | 2 lines
fixed wrong import statement
........
r382 | bricks | 2010-07-27 10:54:34 +0200 (Di, 27 Jul 2010) | 2 lines
removed unnecessary debug output
........
r383 | bricks | 2010-07-27 18:28:22 +0200 (Di, 27 Jul 2010) | 2 lines
check if upload hook is empty
........
r384 | bricks | 2010-07-28 09:35:21 +0200 (Mi, 28 Jul 2010) | 2 lines
run rsync only an arch dirs that are present in the current treepkg
........
r385 | bricks | 2010-07-28 09:35:54 +0200 (Mi, 28 Jul 2010) | 2 lines
add helper tool to list content of a cache db
........
r386 | bricks | 2010-07-28 10:33:48 +0200 (Mi, 28 Jul 2010) | 3 lines
fixed a typo
regex fails if option is empty
........
author | Bjoern Ricks <bricks@intevation.de> |
---|---|
date | Fri, 06 Aug 2010 13:28:47 +0000 |
parents | 092925ff75d7 |
children |
line wrap: on
line source
README for TreePackager ======================= TreePackager is a tool to automatically build debian packages. Prerequisites ------------- You need the following software to run TreePackager. In the list below, parentheses contain the name of the corresponding package in Debian Etch if its not the same as the software. The version required is usually the one from debian etch. Python 2.4 (python2.4-minimal) Debian devscripts (devscripts) subversion pbuilder git-core sudo bzip2 For the web front-end you also need the following software: Genshi (python-genshi) CherryPy (python-cherrypy) Some of the packagers require additional software. The KDEPIM enterprise branch packagers require the following additional software: autoconf2.13 automake1.9 Installation ------------ You can run the tree packager itself directly from the source tree. However, you need to configure it first and setup pbuilder. Configuration ------------- To understand the configuration, first a few notes about the architecture of TreePackager. The TreePackager consist of one program that periodically updates svn working directories and if something has changed, builds a new debian package from the working directory. The program should run as a normal user. The sample configuration assumes that it's the user "builder" with a home directory "/home/builder". The default configuration manages a directory tree under "/home/builder/enterprise". The binary packages are built with pbuilder. Because pbuilder uses a chroot environment to build the packages, it must be run as root. The tree packager therefore needs a way to run pbuilder as root even though itself runs as a non-root user. By default the tree packager uses sudo, so you have to setup sudo to allow the tree packager user to invoke pbuilder without a password. This can be accomplished with the following line in /etc/sudoers (using the default user name): builder ALL = NOPASSWD: /usr/sbin/pbuilder Configure TreePackager ~~~~~~~~~~~~~~~~~~~~~~ The file demo.cfg contains example configuration that contains most of what is needed to package KDEPIM and kde-i18n from the KDEPIM enterprise branch. Copy this file to treepkg.cfg and adapt it to your needs. The comments in the file should provide most of the hints to get you started. Some more information is in the "Configuring a packager" section below. Configuring a packager ~~~~~~~~~~~~~~~~~~~~~~ The configuration file contains one section for each packager. The section name starts with a "pkg_" prefix. The possible options are described in demo.cfg. However there are some things that need to be set up outside of the config file. Each packager has a base directory (the base_dir option in the corresponding pkg_-section). One thing needed by a packager is the contents of the debian sub-directory of the debian source package. When creating the source package, the packager simply copies the sub-directory "debian" of the base_dir into the directory making up the source tree. How the debian directory is created and maintained is up to you. Usually it's a good idea to start with the debian sub-directory an existing debian package for the software. Once you have configured the packagers, you can create their directories with bin/inittreepkg.py This will create base directories of each packager and report some missing steps that will have to be done manually, like creating a debian subdirectory with the debian packaging information. Configure pbuilder ~~~~~~~~~~~~~~~~~~ It's best to give the tree packager its own pbuilder configuration and directories. The default configuration uses a "pbuilder" sub-directory in /home/builder/enterprise. If you have created the treepkg.cfg file with at least one packager and the correct root_cmd and pbuilderrc options (the defaults for both should be OK if you use sudo as described above), you can create the directories, the pbuilder configuration and the chroot environment with the script initpbuilder.py like this: bin/initpbuilder.py --mirrorsite=<URL of preferred debian mirror> You can specify some more mirrors with the --othermirror option. For more information run "bin/initpbuilder.py --help" and consult the pbuilder documentation. Configure the web front-end ~~~~~~~~~~~~~~~~~~~~~~~~~~~ The web front-end consists of a single HTML-page with an overview of the packager status and links to build logs when available. There are two ways to publish this front-end: as little web-server with a dynamic web-page or as a directory with a bunch of files making up a static web-site. Web-server: The default configuration should be OK in most cases. If you want you can customize it in cherrypy.cfg. Start the web front-end with bin/starttreepkgweb.py starttreepkgweb has some options to specify which configuration files to use. Static pages: The static pages are published using two programs, createstaticweb.py and publishstaticweb.py. createstaticweb.py is run on the system where the tree packager runs. publishstaticweb.py is usually run on another system and connects via ssh and rsync to the tree packager host, creates the files with createstaticweb.py and copies the files from the tree packager host to a third host. The configuration file for publishstaticweb.py is demostaticweb.cfg. Copy this file to staticweb.cfg and adapt it to your system. The comments in the file describe the options. Afterwards, run the script with bin/publishstaticweb.py Notification Mails ~~~~~~~~~~~~~~~~~~ The tree packager can send notification mails when a built fails. This works in a two-step process like the creation of the static web-pages. The sample configuration file for the notification mails is demonotification.cfg. Copy it to notification.cfg and adapt it to your needs. The comments in the file describe the options. In particular you will want to customize the template for the notification mail to include suitable email addresses. To actually send notifications, run bin/sendnotificationmails.py Note that this only tries to send mails when a build has failed. Running the Tree Packager ------------------------- After configuration, run the tree packager with bin/runtreepkg.py [options] [packager...] For each packager listed on the command line -- or all configured packagers if none are given -- the tree packager checks out or updates the sources and builds binary packages if the new revision hasn't been packaged yet. If the option --once has been given, the tree packager exits after it has checked each packager once. Without it, the check is done repeatedly. The interval between two checks can be set in the configuration file. Call runtreepkg.py with the --help option to see a list of the available options.