Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!feeds.phibee-telecom.net!newsfeed.xs4all.nl!newsfeed3.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.006 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'subject:Python': 0.06; 'automate': 0.07; 'deployed': 0.07; 'subject:application': 0.07; 'tool,': 0.07; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'python': 0.11; 'camp': 0.16; 'code?': 0.16; 'finney': 0.16; 'fit,': 0.16; 'fits': 0.16; 'hierarchy': 0.16; 'hierarchy,': 0.16; 'modules,': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'all,': 0.19; 'deployment': 0.19; 'spread': 0.22; 'header:User- Agent:1': 0.23; 'frameworks': 0.24; 'specifies': 0.24; 'header:X -Complaints-To:1': 0.27; 'idea': 0.28; 'host': 0.29; 'locations': 0.30; 'specified': 0.30; 'code': 0.31; 'branches': 0.31; 'subject:from': 0.34; 'definition': 0.35; 'there': 0.35; 'application': 0.37; 'ben': 0.38; 'branch': 0.38; 'to:addr:python- list': 0.38; 'to:addr:python.org': 0.39; 'received:org': 0.40; 'different': 0.65; 'skip:\xe2 10': 0.65; 'within': 0.65; '8bit%:40': 0.68; '8bit%:21': 0.69; 'goal': 0.75; '8bit%:46': 0.78; '8bit%:24': 0.84; 'bar:': 0.84; 'control)': 0.84; 'discrete': 0.84; 'received:125': 0.84; 'hate': 0.91; 'skip:\xe2 30': 0.91 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Ben Finney Subject: Automate deployment of Python application from multiple VCS repositories Date: Wed, 08 Apr 2015 11:24:45 +1000 Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Gmane-NNTP-Posting-Host: jigong.madmonks.org X-Public-Key-ID: 0xAC128405 X-Public-Key-Fingerprint: 517C F14B B2F3 98B0 CB35 4855 B8B2 4C06 AC12 8405 X-Public-Key-URL: http://www.benfinney.id.au/contact/bfinney-pubkey.asc X-Post-From: Ben Finney User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) Cancel-Lock: sha1:RVr8+0vQifu+1Rf7bWyhY80m7m4= X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 39 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1428456298 news.xs4all.nl 2834 [2001:888:2000:d::a6]:41932 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:88643 Howdy all, What tools are available to automate deployment of a Python application comprising many discrete modules, spread across different code bases in different VCS repositories? My idea is to have a single definition (itself under VCS control) that specifies VCS locations and branches, a hierarchy into which all the modules fit, and a deployment host. host foo: repo ‘spam-common ’, branch ‘trunk’, at ‘./common/’ repo ‘beans ’, branch ‘version 6.1’, at ‘./’ repo ‘sausage ’, branch ‘trunk’, at ‘./third-party/sausage/’ host bar: repo ‘spam-common ’, branch ‘maint’, at ‘./common/’ repo ‘beans ’, branch ‘version 7.0’, at ‘./’ repo ‘eggs ’, branch ‘master’, at ‘./third-party/eggs/’ repo ‘toast ’, branch ‘trunk’, at ‘./third-party/eggs/toast/’ repo ‘sausage ’, branch ‘version 1.4’, at ‘./third-party/sausage/’ The deployment tool, when told which host specification to use, then gathers the code by exporting it from its disparate branches, fits it into the directory hierarchy, and deploys that to the specified host. The goal is to be able to have multiple host specifications, each of which needs a different set of code repositories (and often different branches within those repositories) to be built into the deployed application. What frameworks are there to do this for Python code? -- \ “Know what I hate most? Rhetorical questions.” —Henry N. Camp | `\ | _o__) | Ben Finney