DESCRIPTION
pybit-web provides a database connection and the controller to send messages to pybit clients to create a specific package build using the specified version control system. The client feeds status messages back to the controller which are displayed via the web interface.
SETTING UP THE PYBIT-WEB SERVER
The Debian packaging of pybit-web uses dbconfig-common to configure the database.
For a local postgres instance, choose the unix socket option and the default ident authentication, then postgres as the database administrative user and www-data as the pybit-web database user. You can use whatever name you prefer for the pybit-web database itself.
Note: Ensure that the www-data user is specified or apache will not be granted permission to use the database connection. It's not enough to just set the user to www-data in /etc/pybit/web/web.conf - this setting is correct but needs postgres to be configured to allow access to www-data.
Also check that the pybit-web database owner is set to www-data and that all the tables in the database have the owner set to www-data. Use ALTER DATABASE OWNER name TO "www-data" and ALTER TABLE name OWNER to "www-data" if necessary.
BLACKLISTING PACKAGES
Sometimes there will be packages being committed to the VCS with updated debian/changelog files but which either cannot or should not be built automatically.
pybit-web supports a postgres table called Blacklist, with fields "field" and "regex". Blacklist is used internally by process_job() in controller to determine if certain packages are centrally blacklisted using regexes. If there is a match on the field in question, pybit-web will not issue a build request for this package. process_job() is called by both the WebGUI and the VCS hook.
For example "name" and "(.*-dev)" will mean we do not autobuild any development packages, while "vcs_uri" and "(.*/users/*)" will block sources from locations such as /repo/users/jamesb/somebadcode
The controller log will print "BLACKLISTED! - [regex] matches [fieldname]:[data]" if a package is blacklisted.
A 403 will be returned, as well as a False, from process_job to its caller (previously it returned void)