Hello Everyone,

TL;DR; I have a proposal regarding using the Airflow CI/Prod images
generation for our daily builds/PR/local development. This is mostly
internal detail on the code/image registry - the development workflow
will remain practically the same with my proposal.

Context:

Co far we have used DockerHub as a temporary cache for images (CI and
Prod) that were build during the PR/master CI runs. This caused us
some problems as the number of builds we had exceeded Docker's
capacity and I had to implement some workarounds (which I am not happy
with - skipping builds on DockerHub when they are < 10 hours old.

However, with the new GIthubActions approach, we can use the internal
registry of GitHub for build image caching (I tested it and it works
as expected in https://github.com/apache/airflow/pull/8393 )

Unfortunately, GithubRegistry requires authentication (please comment
on that thread 
https://github.community/t5/GitHub-Actions/docker-pull-from-public-GitHub-Package-Registry-fail-with-quot/m-p/52505/highlight/false#M8536)
so we cannot use it for local development/breeze easily (everyone will
have to authenticate with the registry ???).  So we have to keep
DockerHub for regular snapshots of images for local development.

Proposal:

I think that opens us an interesting possibility once we move everything to GA:

1) We use Github Registry for all CI image caches - that will make
them always "fresh"

2) Use DockerHub to keep released images (1.10.10, 2.0.0 in the future ...)

3) We have daily TAGs applied automatically by CRON jobs in github
that will be daily "snapshots" of Airflow code and images and we use
those daily snapshots for local development/Breeze.

This way we can trigger the builds in Dockerhub based on TAGs rather
than on every master merge as we have now. This will add number of
tags we have in our repo (but they will be well organised - they will
follow for example 'daily-master-ci-2020-04-21' for CI image and
`daily-master-2020-04-21` and `daily-master-build-2020-04-21`

Such daily tags/snapshots are usual approach for many projects. Plus
they will give us the opportunity to track down history a bit easier.

WDYT?

J.

-- 
Jarek Potiuk
Polidea | Principal Software Engineer

M: +48 660 796 129

Reply via email to