On Wed, 13 May 2015 19:14:36 +0300 Исаев Виталий <is...@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/
pgpyCP11vrfbP.pgp
Description: OpenPGP digital signature