SkaleData Docs
Airflow Image

Releases

Release log for ghcr.io/skaledata/airflow. Each entry is one image publish event, dated by the day it shipped to GHCR and headed by the image tag(s) affected.

The plugin package (airflow-provider-skaledata) versions independently; see PyPI for its changelog.

2026-08-09 — DataHub Airflow lineage plugin baked in

Image: ghcr.io/skaledata/airflow:3.2.2, :3.3.0 (also :latest, all re-published)

Adds acryl-datahub-airflow-plugin==1.7.0 so every SkaleData Airflow can emit lineage and run metadata to a DataHub instance with no DAG changes. The plugin stays inert until the control plane wires the connection (automatic when the cluster runs a DataHub app), so there's no behaviour change for clusters without DataHub.

Dependency note: Airflow's constraints file pins setuptools==82.0.1, but current acryl-datahub requires setuptools<82. Installed naively that makes pip silently backtrack the plugin to an ancient Airflow-2-only 0.14.x release, so the image relaxes only the setuptools pin (lands at 81.0.0, build-tooling only); every other dependency stays held to Airflow's constraints. No change to any runtime dependency.

Get it: stock-image clusters pull it on their next chart upgrade. If you publish a custom image (FROM ghcr.io/skaledata/airflow:<tag>), rebuild to pick it up — re-publishing pulls the refreshed base tag.

2026-08-08 — per-user identity + roles (SkaleDataAuthManager)

Image: ghcr.io/skaledata/airflow:3.2.2, :3.3.0 (also :latest, re-published)

Bakes in SkaleDataAuthManager, which turns the SkaleData proxy's verified signed-in user into a real Airflow identity — the audit log, "triggered by", and note authorship now record the actual person instead of Anonymous. It also adds roles (Admin / Op / User / Viewer) resolved from a control-plane-managed roster, wired to the console's User Management tab; users not listed get a configurable default role (ships as Admin, so nothing changes until you tighten it). A missing/unreadable roster fails open to everyone-Admin, and machine/API access stays Admin — so the proxy token exchange and skale app exec are unaffected.

Custom-image clusters: the manager lives in the base image, so a custom image must be rebuilt against this (or a later) base tag before per-user identity activates — a control-plane redeploy of an old image won't pick it up.

2026-07-06 — 3.3.0 added, :latest bumped

Image: ghcr.io/skaledata/airflow:3.3.0 (also :latest)

Adds Airflow 3.3.0 to the build matrix; :latest now floats to 3.3.0. The 3.2.2 line continues to build and re-publish on every release.

2026-06-02 — 3.2.2 re-published: no --constraint in customer ONBUILD pip

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

Dropped --constraint=<apache-airflow-constraints-3.2.2> from the ONBUILD customer pip install. Customers can now pin newer provider versions than the Apache constraints file allows (e.g. apache-airflow-providers-airbyte==5.5.0 while the 3.2.2 constraints pin 5.4.2). 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.

Prior symptom: downstream builds with a newer provider version pinned failed with ResolutionImpossible during the ONBUILD pip step.

2026-06-02 — 3.2.2 re-published: filter comments + blank lines in ONBUILD

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

Pre-filter # comments and blank lines before passing packages.txt / requirements.txt to apt/pip. Previously the ONBUILD used a file-non-empty check ([ -s ... ]), so a comment-only file (like the scaffold from skale airflow init) sent # to apt and failed with E: Unable to locate package #.

2026-06-02 — 3.2.2 re-published: default webserver_config.py baked in

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

Bakes /opt/airflow/webserver_config.py (AUTH_ROLE_PUBLIC = "Admin") into the image. Customer repos no longer need to ship one for local dev or prod. SkaleData proxies validate the sdk_* API key at the edge — an internal login screen would add noise without security.

Overrides: customers with stricter internal auth can override either by COPYing their own webserver_config.py after the FROM line (later COPY wins), or by volume-mounting one at /opt/airflow/webserver_config.py.

2026-06-02 — 3.2.2 re-published: multi-arch (linux/amd64 + linux/arm64)

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

Local dev on Apple Silicon now pulls the image natively — no more no match for platform in manifest when running skale af start. Customer prod clusters (GKE / EKS / AKS) keep pulling the amd64 variant.

2026-06-02 — 3.2.2 re-published: skale.providers.* plugin namespace

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

Plugin imports moved from skaledata_airflow_plugins.airbyte.* to skale.providers.airbyte.*, mirroring upstream's airflow.providers.* layout; class names now match upstream exactly.

Migration required in customer DAGs:

OldNew
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

2026-06-02 — 3.2.2 re-published: ONBUILD triggers for packages.txt / requirements.txt

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

Auto-picks up packages.txt (apt) and requirements.txt (pip) from the customer's build context via ONBUILD, before any of their own Dockerfile instructions run. Matches Astronomer's Astro Runtime convention.

Behaviour change: existing customer Dockerfiles that already do their own COPY requirements.txt + RUN pip install keep working — those steps become redundant but harmless, and are safe to simplify away.

2026-06-02 — 3.2.2 first published (Airflow bump from 3.2.1)

Image: ghcr.io/skaledata/airflow:3.2.2 (mutable)

Bumps default Airflow patch to 3.2.2 (Apache published it as a patch on top of 3.2.1). The 3.2.1 tag from the previous release stays in GHCR for anyone pinned to it.

2026-06-02 — 3.2.1 re-published without the -python3.12 suffix

Image: ghcr.io/skaledata/airflow:3.2.1 (new public tag, replaces 3.2.1-python3.12)

Python version is an internal build-time pin (currently 3.12) and not a user choice; surfacing it in the customer-facing tag was noise. The 3.2.1-python3.12 tag from the initial release stays in GHCR as a historical artifact.

2026-06-02 — Initial release

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

First public image. Contents:

  • apache/airflow:3.2.1-python3.12
  • apache-airflow-providers-airbyte (pinned via upstream Airflow constraints)
  • SkaleData's plugin package 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

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.

On this page