[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Modern Debian packaging system for DevOps: does it exist?



On Wed, 13 May 2015 19:14:36 +0300
Исаев Виталий <isaev@corp.sputnik.ru> wrote:

> Hello! I'm looking for a convenient wrapper of standard Debian
> packaging toolchain in order to automatize the deployment process.

It would seem to be attainable, but then each use case goes off on a
particular tangent:

> We
> use Ubuntu and Debian, and the most part of code is written in C++,
> therefore we need to compile and build binary debs. Currently our
> infrastructure consists of:
> 
>  1. Gitlab;
>  2. Isolated build environment inside Docker containers (where we
>     usually do `git clone && mk-build-deps && debuild`);
>  3. Aptly;
>  4. Self-written Python scripts linking all these components;

What is the reason for docker vs chroot, LVM snapshot or VM?
 
> At the moment we're trying to collect more information about existing 
> packaging systems. Our self-written scripts no longer meet our needs. 
> Now we have faced a choice: either we move our deployment process
> into third-party packaging system (if we find the good one), or we
> get involved into the development of own full-featured system.
> 
> I would like to put an emphasis on the most in-demand features:
> 
>  1. Lightweight isolated environment (hardware virtualization is not
>     suitable);
>  2. Git support;
>  3. RESTful API (in order to provide clear integration with git hooks
>     that will launch build process);
>  4. Web interface;
>  5. Support for a different build backends (Debian default toolchain |
>     CPack);
>  6. Binary package repository integration;
>  7. Package version control (support for builds from different
> branches, build number incrementation, keep changelog consistent,
> etc.); 8. Email notification;
>  9. Privacy (ability to deploy the system on the own facilities);

Please clarify - is this meant to relate to not using the formal Debian
archive but replicating something essentially similar inside a private
network where connections between units can be public or do those
connections between build system units need to be encrypted?
 
> It seems like none of the well-known open-source solutions (Open
> Build Service, Launchpad, Travis CI) meets this requirements. Please
> share how exactly you build deb packages from your projects and what
> tools do you use? Any help will be appreciated.

As you've found, each use case differs substantially. In my last job,
we got the the point of writing pybit (which is in Debian) for our
needs and it covers some of your requirements - except that development
has stalled as the team now have different jobs and different use cases,
none of which precisely match. However, if you want a codebase which
can get you a start which has the RestAPI, pluggable backends, VCS hook
support, Debian packaging knowledge and is able to automatically plug
the built .deb files into an internal Debian archive, it is worth
considering. You'd likely be forking it at the github level and
building up from there. Current code stops at the point where we had a
working process for subversion building on two ARM daemons but then
upstream collectively ran out of time to push it further. It's not the
solution you describe but it could be something which gets you a start
on something other than your current scripts. I thought I'd mention it
as it started out in just the same way as you describe - we had a need
for a particular use case, it just doesn't exactly match yours.

Each time a team comes to this problem, a new solution is created. The
components are all in place already - pybit uses schroot (same as the
main Debian archive) and can use pbuilder etc. - it's the glue tying
the bits together which gets hard to adapt to different users. Turns
out to be hard to get one system which can be sufficiently flexible.

Personally, my own build needs have essentially gone away as my
development is now almost exclusively in python (and a tiny bit of
perl). git-buildpackage is all we need and this codebase has no
requirement for any isolation beyond the simplest chroot - and even
that is only actually used for "official" builds. Developer builds for
local testing just build from git.

-- 


Neil Williams
=============
http://www.linux.codehelp.co.uk/

Attachment: pgpEmldwaW65o.pgp
Description: OpenPGP digital signature


Reply to: