[Zope-dev] env var support for zc.buildout
Florian Friesdorf
flo at chaoflow.net
Mon Apr 19 10:00:40 EDT 2010
Hi Jim, hi Christian,
any further thoughts on this?
best regards
florian
On Fri, Apr 09, 2010 at 05:23:36PM +0200, Florian Friesdorf wrote:
> On Fri, Apr 09, 2010 at 10:16:51AM -0400, Jim Fulton wrote:
> > > We currently use it for 5 very similar sites that share one repository
> > > but use 5 checkouts of it:
> > >
> > > base.cfg
> > > [buildout]
> > > parts = instance
> > >
> > > develop = ...
> > > eggs = ...
> > > zcml = ...
> > >
> > > [instance]
> > > ...
> > >
> > >
> > > site-1.cfg
> > > [buildout]
> > > eggs +=
> > > zcml +=
> > >
> > >
> > > testenv.cfg
> > > [buildout]
> > > extends =
> > > base.cfg
> > > ${env:site}.cfg
> > >
> > > <stuff for testenv>
> > >
> > >
> > > deploy.cfg
> > > [buildout]
> > > extends =
> > > base.cfg
> > > ${env:site}.cfg
> > >
> > > <stuff for deploy>
> > >
> > >
> > > % site=site-1 ./bin/buildout -c deploy.cfg
> >
> > Your extends usage seems a bit convoluted. Why not just have:
> >
> > - deploy.cfg extend base.cfg
> >
> > - site1-1.cfg etc extend deploy.cfg
> >
> > Then you'd just:
> >
> > % ./bin/buildout -c site-1.cfg
>
> That would mean:
> - 1 base.cfg
> - 1 deploy.cfg
> - 1 testenv.cfg
> - 5 site-specific extending deploy.cfg
> - 5 site-specific extending testenv.cfg
> total: 13 files
>
> Site-specific information reside in two cfgs, which is error-prone.
>
>
> In contrast to our current setup, with env var support, without
> the need to duplicate information.
> - 1 base.cfg
> - 1 deploy.cfg
> - 1 testenv.cfg
> - 5 site specific cfgs
> total: 8 files
>
>
> Site-specific information could be factored out, as in the setup with
> env var support:
>
> testenv-site-1.cfg:
> [buildout]
> extends =
> testenv.cfg
> site-1.cfg
>
> Information would not be duplicated but the amount of files increases to
> 18.
>
>
> Further we use a dev environment tailored for local individual
> development in contrast to the testenv which is meant for the customer
> to be kept up-to-date about the development, without e.g. PDBDebugMode.
> With that dev environment the numbers are 18 (with site-specific info
> in three places) or 23 vs. 9 files.
>
> This idea can be taken further to mass hosting in dedicated instances
> but based on one buildout, or branches of one buildout that share the
> majority of stuff.
>
> Other use cases coming to my mind:
> - ip address for zope to listen on: instead of hard-coded 8080 or
> 127.0.0.1:8080, you can have ${env:MYPROJECT_LISTEN} and people being
> involved in several projects can choose in order to have several
> buildouts running in parallel
> - location of the Data.fs: I like to have the Data.fs outside of the
> buildout dir for development, which enables the use of 'git clean
> -xdf', i.e. wiping everything which is not tracked.
>
>
> I like the idea of the need to configure the name of the environment
> section:
> [buildout]
> environment=env
> extends = ${env:...}
>
> At the time the extends are processed, the whole buildout section is
> already read into the options dict, so configuration of the name of the
> environment section is easily possible and can be used to trigger the
> substitution code:
> if extends:
> envsecname = options.get('environment')
> if envsecname:
> # do variable substitution like in my patch
> # if no environment is specified nothing changes
> # continue normally
>
> I would not pop() the options, so the name of the environment section
> can be queried by other parts of buildout. Likewise, extends could not
> be pop()'ed - both then would need to go onto a list, which buildout
> checks, in order not to complain about them being unused.
>
>
> If I could get commit acces to svn.zope.org, I would further work on
> this in a separate branch, more effective than via patches. Committer
> agreement I can fax/email. I am not committing to branches that don't
> belong to me, without prior consultation. So far I have commit access to
> the plone repo, which might be meaningless or at least a minor sign of
> credibility.
>
>
> I hope I could clarify the usefulness of env var support.
>
> florian
>
> --
> Florian Friesdorf <flo at chaoflow.net>
> GPG FPR: EA5C F2B4 FBBB BA65 3DCD E8ED 82A1 6522 4A1F 4367
> Jabber/XMPP: flo at chaoflow.net
> OTR FPR: 9E191746 213321FE C896B37D 24B118C0 31785700
> IRC: chaoflow on freenode,ircnet,blafasel,OFTC
> _______________________________________________
> Zope-Dev maillist - Zope-Dev at zope.org
> https://mail.zope.org/mailman/listinfo/zope-dev
> ** No cross posts or HTML encoding! **
> (Related lists -
> https://mail.zope.org/mailman/listinfo/zope-announce
> https://mail.zope.org/mailman/listinfo/zope )
--
Florian Friesdorf <flo at chaoflow.net>
GPG FPR: EA5C F2B4 FBBB BA65 3DCD E8ED 82A1 6522 4A1F 4367
Jabber/XMPP: flo at chaoflow.net
OTR FPR: 9E191746 213321FE C896B37D 24B118C0 31785700
IRC: chaoflow on freenode,ircnet,blafasel,OFTC
More information about the Zope-Dev
mailing list