

Continuous Deployment Style Build System for Python - nawkboy

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.<p>With an eye to agile development principles and fast-feedback, we want a build system which satisfies the following goals:<p>* Every SCM change-set committed should result in a potentially shippable release candidate.<p>* 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.<p>* Library management should be so easy as to never impede code changes, even in multi-component architecture.<p>More details available at: http://teamfruit.github.io/defend_against_fruit/<p>License: Apache Public License v2<p>Authors:<p>James Carpenter 
jcarpenter621 at yahoo.com
LinkedIn: http://www.linkedin.com/in/jamescarpenter1<p>Matthew Tardiff
mattrix at gmail.com
LinkedIn: http://www.linkedin.com/in/matthewtardiff
======
themattrix
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...](https://github.com/teamfruit/defend_against_fruit/wiki/How-
To#overview)):

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.

