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 SkaleDataAirbyteHook | from skale.providers.airbyte.hooks.airbyte import AirbyteHook |
from skaledata_airflow_plugins.airbyte import SkaleDataAirbyteTriggerSyncOperator | from skale.providers.airbyte.operators.airbyte import AirbyteTriggerSyncOperator |
from skaledata_airflow_plugins.airbyte import SkaleDataAirbyteSyncTrigger | from 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.2and hasrequirements.txtorpackages.txtalongside 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 installkeep 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.12apache-airflow-providers-airbyte(pinned via the upstream Airflow constraints file)skaledata-airflow-pluginswith the Airbyte bearer-auth shim:SkaleDataAirbyteHook— bearer-authcreate_api_sessionoverrideSkaleDataAirbyteSyncTrigger— deferrable trigger using the new hookSkaleDataAirbyteTriggerSyncOperator— drop-in for the upstream operator
Compatibility:
- Customer DAGs using
from skaledata_airflow_plugins.airbyte import SkaleDataAirbyteTriggerSyncOperatorwork without any further setup. - Stock-image SkaleData Airflow clusters automatically pull this image on next chart upgrade.