Live data from Hacker News

Continuous Deployment Style Build System for Python

news.ycombinator.com

1–2 of 2 posts

Continuous Deployment Style Build System for Python

#1
Defend Against Fruit is focused on providing a pragmatic, continuous deployment style build system for Python. Current Python build systems do not properly account for the needs of effective continuous deployment. This package extends the Python tooling to add the missing pieces, including integration with Artifactory.

With an eye to agile development principles and fast-feedback, we want a build system which satisfies the following goals:

* Every SCM change-set committed should result in a potentially shippable release candidate.

* When a defect is introduced, we want to immediately detect and isolate the offending SCM change-set. This is true even if the defect was introduced into a library we depend upon.

* Library management should be so easy as to never impede code changes, even in multi-component architecture.

More details available at: http://teamfruit.github.io/defend_against_fruit/

License: Apache Public License v2

Authors:

James Carpenter jcarpenter621 at yahoo.com LinkedIn: http://www.linkedin.com/in/jamescarpenter1

Matthew Tardiff mattrix at gmail.com LinkedIn: http://www.linkedin.com/in/matthewtardiff

Re: Continuous Deployment Style Build System for Python

#2
Our primary goal is to get the Python community talking about continuous deployment. Our particular implementation is less important. In fact, we'd like to see this project die entirely and have its ideas live on in the standard Python tooling.

That being said, here's an overview of our implementation from the wiki (https://github.com/teamfruit/defend_against_fruit/wiki/How-T...):

Defend Against Fruit aims to provide a quick and simple way to package, test, and publish a Python package from within a virtual environment (virtualenv). It boils down to running the following command inside the project directory:

  > ci --publish
If not previously run, this script will handle the virtualenv bootstrapping from (nearly) scratch, requiring only a base Python installation and a few configuration files.

Afterward—and on every subsequent run—the script enters the virtualenv, runs the package's unit tests, builds the package, and publishes it to the artifact repository along with dependency metadata. Each step is only run if the prior step succeeded, so anyone consuming this artifact can be sure it has passed all of its unit tests.

As part of Continuous Deployment (CD), we need a mechanism to promote artifacts to higher levels of visibility. Artifactory Pro exposes just such a mechanism through its REST API. We have manually verified the build information Defend Against Fruit publishes is sufficient for promotion.