DEB and RPM automatically as Jenkins jobs

Registered by Henrik Ingo on 2011-11-05

Create Jenkins jobs that output DEBs and RPMs automatically after each commit. Also used as QA: package building is supposed to always work.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Henrik Ingo
Direction:
Needs approval
Assignee:
Monty Taylor
Definition:
Discussion
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

Overall requirement:

Drizzle releases should always include RPM and DEB formats. (And
preferably but less critically also binary TAR, see separate bug about
that.)

Implementation requirements:

Note: mtaylor disagrees with this one. DEB build process is not designed
to work this way and it's easiest to just have it in separate repo.
   The code, scripts and spec files needed should be included in main
   drizzle bzr repository. This means it is possible to do "make rpm" and
   "make deb" from the drizzle sources.

Building RPM and DEB formats should be included as Jenkins build
targets and included in integration test for new patches coming into
trunk.

Primary way of building RPM and DEB is from the source TAR package,
not directly from bzr. (ie these need to be chained Jenkins jobs.)

Jenkins QA of these packages should start from a clean
Centos/Ubuntu/Debian VM to ensure that RPM/DEB dependencies are
correctly defined.

I'm a bit newbie to the Jenkins UI, but the RPM and DEB builds should
be considered part of QA: if I commit a patch where make works but
building DEB/RPM is broken, I should see that easily.

Other Jenkins tests can include things like upgrading from Drizzle 7,
or installing Drizzle into a Linux where default distro version of
MySQL is already installed.

An important use case (that I recently added to the top level Drizzle
README) is that you should be able to compile Drizzle from source
after doing apt-get build-dep drizzle. This should be a separate test
too: apt-get build-dep drizzle; ./configure; make
(Ie if developer adds dependencies on new libraries, they need to
fix DEB/RPM to include that dependency.)

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.