Currently, running unit tests is a difficult process. Airflow tests depend on many external services and other custom setup, which makes it hard for contributors to work on this codebase. CI builds have also been unreliable, and it is hard to reproduce the causes. Having contributors trying to emulate the build environment every time makes it easier to get to an "it works on my machine" sort of situation.
This PR implements a dockerised version of the current build pipeline. This setup has a few advantages:
- TravisCI tests are reproducible locally
- The same build setup can be used to create a local development environment (there's a request for it )
- I'm using Docker Compose for the container orchestration and configuration.
- MySQL, PostgreSQL, OpenLDAP, krb5 and rabbitmq are now services running inside their own containers
- I created a separate repo, called incubator-airflow-ci (TravisCI build here), where a base image with all dependencies is built. In this case, I'm following the same pattern the CouchDB project follows
- Hadoop, Hive and MiniCluster were moved to this base image
- The current TravisCI pipeline lives here. A few tests are still failing. It's still WIP.