<-- Back to schedule

Automated deployment of Python packages for development

The ability to automatically deploy development and test versions of software supports a rapid development/release cycle.

Within our section of the Bureau of Meteorology we have a number of internal Python packages, ranging from small simple packages to large applications that are dependent on the smaller packages. We manage the development cycle to ease deployment of these packages and applications into development, test, and production environments.

Elements of our process are:
* Source code management (git)
* Code review (Gerrit)
* Continuous integration (Jenkins)
* Internal PyPi servers (Apache)
* A development environment for automatic deployment of every Gerrit approved commit (Anaconda environment via Jenkins)
* Versioning (git tags + versioneer)
* Test environment for every tagged version (Anaconda environment via Jenkins)
* Production environment for specified releases (Anaconda environment via Ansible)

A key benefit of this process is that we have a deployed Python environment for the latest development version of all packages, a pinned collection of packages for testing, and an approved stable collection for production. The development and test environments are rapidly updated when commits are approved in Gerrit or tagged. The production environment is then readily updated with specific versions after a period of testing in the test environment.
This presentation will discuss our development process, how it works for us and how we leverage Python packaging to do it.

Andrew MacDonald

Andrew MacDonald is a Python developer who has has spent the last 7 and half years working at the Bureau of Meteorology. The last 5 years of which has been in the Extended Hydrological Prediction section working on a variety of water information products, such as Seasonal Streamflow Forecasts (http://www.bom.gov.au/water/ssf/), Hydrological Reference Stations (http://www.bom.gov.au/water/hrs/), and 7-day Streamflow Forecasts (http://www.bom.gov.au/water/7daystreamflow/).

In his spare time Andrew has developed a Python based time series database called PhilDB (https://github.com/amacd31/phildb). When he isn't coding Andrew enjoys rock climbing, photography, and road trips with his fiancée.