Skip to Content

Airflow Image Releases

Release log for ghcr.io/skaledata/airflow.

Image tags are pinned to upstream Airflow versions; the plugin package version is independent and shipped alongside. Each release row below corresponds to a git tag in skaledata/airflow-base.

v0.2.4 — 2026-06-02

Drop --constraint from the customer-side ONBUILD pip install step. Customers can now pin newer provider versions than the Apache constraints file knows about (e.g. apache-airflow-providers-airbyte==5.5.0 when the 3.2.2 constraints pin 5.4.2).

Image: ghcr.io/skaledata/airflow:3.2.2 (mutable tag re-published)

What broke: The previous ONBUILD passed --constraint=<apache-airflow-constraints-3.2.2> so customer deps couldn’t upgrade past Apache’s hand-tested set. Trux hit this when their requirements.txt pinned apache-airflow-providers-airbyte==5.5.0 — pip errored with ResolutionImpossible.

Fix: No constraints on customer requirements.txt. Matches Astronomer’s astro-runtime behaviour. The base image’s own Airflow install is still pinned with constraints at build time, so the platform layer stays internally consistent. Customer-side breakage from their own pip pins is expected (and is exactly what a customer would expect when they pin versions). CI test fixture updated to install a provider version newer than the constraint — a regression of this fix fails the dockerfile-build job.

Constraints handling note in the overview docs

We deliberately don’t constrain customer requirements.txt installs. If you pin a dep that breaks an installed Airflow component, that’s visible at build time (pip errors there); the base image itself isn’t affected.

v0.2.3 — 2026-06-02

Bugfix: a packages.txt or requirements.txt containing only # comments (e.g. the file skale airflow init scaffolds) no longer breaks the build.

Image: ghcr.io/skaledata/airflow:3.2.2 (mutable tag re-published)

What broke: the ONBUILD layer used a file-non-empty check ([ -s ... ]), which fires for a comment-only file. apt then tried to install the comment text as package names and errored with E: Unable to locate package #.

Fix: pre-filter # lines and blank lines before passing the file to xargs/pip. Mirrored in the pip step for consistency, even though pip already ignores comments natively. CI test fixture updated so a regression of this filter fails the dockerfile-build job.

v0.2.2 — 2026-06-02

Bake a default webserver_config.py into the image at /opt/airflow/webserver_config.py (AUTH_ROLE_PUBLIC = "Admin"). Customer repos no longer need to ship one for local dev or prod.

Image: ghcr.io/skaledata/airflow:3.2.2 (mutable tag re-published)

Why: SkaleData proxies validate the sdk_* API key at the edge — an internal login screen would add noise without security. Same config applies to local dev (no edge proxy, but you’d never want a login wall between you and your own DAGs).

Overrides: customers with a stricter internal auth model can still override by either COPYing their own webserver_config.py in their Dockerfile (runs after ours, wins) or mounting one at /opt/airflow/webserver_config.py via docker-compose / Kubernetes (volume mount wins).

v0.2.1 — 2026-06-02

Multi-arch (linux/amd64 + linux/arm64). Local dev on Apple Silicon now pulls the image natively — no more no match for platform in manifest errors when running skale af start.

Image: ghcr.io/skaledata/airflow:3.2.2 (mutable tag re-published)

Customer prod clusters (GKE / EKS / AKS) keep pulling the amd64 variant.

v0.2.0 — 2026-06-02

Airflow-style namespace for SkaleData’s plug-in extensions. Imports now mirror the upstream airflow.providers.* layout, class names match upstream exactly.

Image: ghcr.io/skaledata/airflow:3.2.2 (mutable tag re-published)

Plugin package: skale-airflow-plugins==0.2.0 (renamed from skaledata-airflow-plugins)

Migration:

Old (v0.1.x)New (v0.2.0)
from skaledata_airflow_plugins.airbyte import SkaleDataAirbyteHookfrom skale.providers.airbyte.hooks.airbyte import AirbyteHook
from skaledata_airflow_plugins.airbyte import SkaleDataAirbyteTriggerSyncOperatorfrom skale.providers.airbyte.operators.airbyte import AirbyteTriggerSyncOperator
from skaledata_airflow_plugins.airbyte import SkaleDataAirbyteSyncTriggerfrom skale.providers.airbyte.triggers.airbyte import AirbyteSyncTrigger

Future SkaleData providers slot in under skale.providers.<name>.* without churning this top-level namespace.

v0.1.3 — 2026-06-02

Auto-pick-up of packages.txt and requirements.txt from the customer’s build context via ONBUILD triggers. Matches Astronomer’s convention.

Image: ghcr.io/skaledata/airflow:3.2.2 (mutable tag re-published)

Plugin package: skaledata-airflow-plugins==0.1.0 (unchanged)

Behavior change:

  • If your downstream Dockerfile uses FROM ghcr.io/skaledata/airflow:3.2.2 and has requirements.txt or packages.txt alongside it, those get installed automatically before any of your own Dockerfile instructions run.
  • Existing Dockerfiles that already do their own COPY requirements.txt + RUN pip install keep working — they just become redundant. Safe to simplify.

v0.1.2 — 2026-06-02

Bump default Airflow to 3.2.2. Apache published 3.2.2 as a patch on top of 3.2.1; the SkaleData base now tracks it.

Image: ghcr.io/skaledata/airflow:3.2.2

Plugin package: skaledata-airflow-plugins==0.1.0 (unchanged)

The 3.2.1 tag from v0.1.1 stays in GHCR for anyone pinned to it.

v0.1.1 — 2026-06-02

Drop -python3.12 suffix from public image tag. Python version is an internal build-time pin and not a user choice; surfacing it was noise. The 3.2.1-python3.12 tag from v0.1.0 stays in GHCR as a historical artifact.

Image: ghcr.io/skaledata/airflow:3.2.1

Plugin package: skaledata-airflow-plugins==0.1.0 (unchanged from v0.1.0)

v0.1.0 — 2026-06-02

First release.

Image: ghcr.io/skaledata/airflow:3.2.1-python3.12

Plugin package: skaledata-airflow-plugins==0.1.0

Included:

  • apache/airflow:3.2.1-python3.12
  • apache-airflow-providers-airbyte (pinned via the upstream Airflow constraints file)
  • skaledata-airflow-plugins with the Airbyte bearer-auth shim:
    • SkaleDataAirbyteHook — bearer-auth create_api_session override
    • SkaleDataAirbyteSyncTrigger — deferrable trigger using the new hook
    • SkaleDataAirbyteTriggerSyncOperator — drop-in for the upstream operator

Compatibility:

  • Customer DAGs using from skaledata_airflow_plugins.airbyte import SkaleDataAirbyteTriggerSyncOperator work without any further setup.
  • Stock-image SkaleData Airflow clusters automatically pull this image on next chart upgrade.
Last updated on