Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This proposal was deprecated by AIP-10 Multi-layered and multi-stage official Airflow CI image where CI image is being embedded into the main airflow repository

Right now, every time we pull our CI images from dockerhub, we then need to pip install all dependencies to our local/travis machine. This can take anywhere from 3-5 minutes. This is also extremely wasteful as these packages have to be redownloaded every time the CI script is run. 

Proposal: Pre-bake all airflow dependencies into the airflow-ci image  - the CI image is part of the main repo
Step 1: Every time dependencies change, the PR owner creates a feature branch in the airflow-ci repo

We can set up our system where if a user wants to create a change to the airflow CI image, they can create a feature branch in https://github.com/apache/incubator-airflow-ci. This will generate a docker image with that feature branch as the tag for the docker image. We specify a dockerhub rule that only the master branch can create numbered tags. When that PR is accepted a new tag is created. This ensures that old builds are not broken since they all contain the old tag. 

Step 2: Update airflow-ci tag in the airflow repo

With the airflow-ci tag changed, users will be able to test their code with the newest dependencies. While the PR is pending they can test with their feature branch image, but PRs will not be accepted until the new official tag has been created.

Benefits:

Faster Iterative testing:

Once the image has been downloaded once, users will be able to re-run it as many times as they like without needing to redownload all airflow dependencies from scratch.     Already provided by the CI image from AIP-10

Faster CI:

If we can split the dependencies into multiple image layers and keep individual layers small, these layers can be downloaded in parallel, making for fast loading into travis. Already provided by the CI image from AIP-10