[katello-devel] developing & deploying on multiple platforms

Dmitri Dolguikh dmitri at redhat.com
Thu Aug 23 06:37:13 UTC 2012


Hey all,
We currently have two, soon to be three platforms that we support: RHEL 
6.3+ (client and server), F16, and F17. I'll talk about support (AKA 
production deployment) and development separately.

Support.
Each of the platforms has its own set of ruby-gems that it ships with, 
and we use in our deployment on said platform. I propose that for each 
of deployment platforms we create a branch, and *bundle* and potentially 
freeze (in bundler sense of the word) all of that platform dependencies, 
including development ones. We tag it, just like we usually do, when we 
generate an rpm for that platform.

The benefits of this approach are:
  - no need for multiple gem repositories (this stuff is slowly changing 
on support-platforms)
  - deployment setup is easily and consistently replicated on any 
platform (and saves us from situations when newer development dependency 
relies on a production dependency that is not available on a given platform)
  - packaging-specific information is kept away from the main 
development branch


Development.
We use the same set of newer version of dependencies on any platform 
(including those above). We develop using gems, changing Gemfile as 
often as required. We convert gems to rpms as we go - this is similar to 
Conductor development model.

The benefits of this approach are:
  - very easy to update/modify dependencies
  - no need to maintain custom gem repository, we can rely on rubygems.com
  - development setup is easily and consistently replicated on any platform

Thoughts/opinions?
-d




More information about the katello-devel mailing list