This is an automated email from the ASF dual-hosted git repository.
shahar1 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 5d744b59810 Update AGENTS.md to instruct local Kubernetes clusters
setup with breeze k8s (#76482)
5d744b59810 is described below
commit 5d744b598103ce44adfd390a57c92f2a2e30a7b4
Author: Kevin Yang <[email protected]>
AuthorDate: Sat Nov 7 00:34:38 2026 -0500
Update AGENTS.md to instruct local Kubernetes clusters setup with breeze
k8s (#76482)
Agents reproducing Kubernetes issues sometimes created kind clusters and
installed the Helm chart by hand. Nothing in AGENTS.md steered them to
breeze k8s: the host-commands rule only names pytest, python and
airflow. Hand-made clusters skip the documented setup and are invisible
to breeze k8s status and delete-cluster.
Using breeze k8s alone still leaves room to end up on the wrong cluster.
breeze k8s takes v-prefixed Kubernetes versions while breeze testing
helm-tests takes bare ones, and breeze k8s only warns and falls back to
its default when given a version it does not support, so a reproduction
can quietly run on a different version than the issue reports. A
kubectl run from the host reads ~/.kube/config, which can point at a
cluster other than the one breeze created, and an interactive breeze k8s
shell exits at once when an agent runs it without a terminal, leaving
the following kubectl calls on the host.
The helm-tests example hardcoded 1.35.0, which breeze no longer accepts;
any pinned version there goes stale when the supported list changes.
---
AGENTS.md | 3 ++-
contributing-docs/testing/unit_tests.rst | 2 +-
dev/skill-evals/last-eval-hash.txt | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/AGENTS.md b/AGENTS.md
index 839092ed976..ba72ee54f74 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -24,6 +24,7 @@ Don't spell out **Directed Acyclic Graph** except for
historical context.
- Enable commit hooks: `prek install`
- Install breeze shim (one-time, per machine): `scripts/tools/setup_breeze` —
installs `~/.local/bin/breeze` that runs breeze via `uv run --locked` from the
current git worktree's `dev/breeze`, with dependencies pinned by
`dev/breeze/uv.lock` (so each worktree, including ephemeral agent worktrees,
gets its own breeze tied to its sources). See [ADR
0017](dev/breeze/doc/adr/0017-use-uvx-to-run-breeze-from-local-sources.md).
- **Never run pytest, python, or airflow commands directly on the host** —
always use `breeze`. The only exception is the `uv run --project <PROJECT> ...`
commands listed below, run against the workspace sources.
+- **Local Kubernetes clusters also go through `breeze k8s`** — create, deploy
to and delete kind clusters with `breeze k8s`, including clusters used only to
check Kubernetes behaviour, with no Airflow deployed. Take the steps from the
[typical testing
pattern](contributing-docs/testing/k8s_tests.rst#typical-testing-pattern-for-kubernetes-tests)
and the options and allowed values from `breeze k8s <command> --help`;
Kubernetes versions take a `v` prefix (e.g. `--kubernetes-version v1.35.8` [...]
- If a step needs `breeze` and it cannot run (Docker missing, or its Docker
calls refused by a sandbox or socket proxy), stop and tell the user which call
failed. Do not build a substitute host environment instead, such as a
virtualenv with a released Airflow version.
- Place temporary scripts in `dev/` (mounted as `/opt/airflow/dev/` inside
Breeze).
@@ -43,7 +44,7 @@ Don't spell out **Directed Acyclic Graph** except for
historical context.
- **Run core or provider non-db tests suite in parallel:** `breeze testing
<test_group> --skip-db-tests --use-xdist` (test groups: `core-tests`,
`providers-tests`)
- **Run single provider complete test suite:** `breeze testing providers-tests
--test-type "Providers[PROVIDERS_LIST]"` (e.g., `Providers[google]` or
`Providers[amazon]` or "Providers[amazon,google]")
- **Run Helm tests in parallel with xdist** `breeze testing helm-tests
--use-xdist`
-- **Run Helm tests with specific K8s version:** `breeze testing helm-tests
--use-xdist --kubernetes-version 1.35.0`
+- **Run Helm tests with specific K8s version:** `breeze testing helm-tests
--use-xdist --kubernetes-version <version>` (bare version, e.g. `1.35.8`,
unlike the `v`-prefixed `breeze k8s` versions; allowed versions in `breeze
testing helm-tests --help`)
- **Run specific Helm test type:** `breeze testing helm-tests --use-xdist
--test-type <type>` (types: `airflow_aux`, `airflow_core`, `apiserver`,
`dagprocessor`, `other`, `redis`, `security`, `statsd`, `webserver`)
- **Run other suites of tests** `breeze testing <test_group>` (test groups:
`airflow-ctl-tests`, `docker-compose-tests`, `task-sdk-tests`)
- **Run scripts tests:** `uv run --project scripts pytest scripts/tests/ -xvs`
diff --git a/contributing-docs/testing/unit_tests.rst
b/contributing-docs/testing/unit_tests.rst
index e86844c3999..f701574d438 100644
--- a/contributing-docs/testing/unit_tests.rst
+++ b/contributing-docs/testing/unit_tests.rst
@@ -298,7 +298,7 @@ As explained before, you cannot run DB tests in parallel
using the ``pytest-xdis
- "- **Run core or provider non-db tests suite in parallel:** `breeze
testing <test_group> --skip-db-tests --use-xdist` (test groups: `core-tests`,
`providers-tests`)"
- "- **Run single provider complete test suite:** `breeze testing
providers-tests --test-type \"Providers[PROVIDERS_LIST]\"` (e.g.,
`Providers[google]` or `Providers[amazon]` or \"Providers[amazon,google]\")"
- "- **Run Helm tests in parallel with xdist** `breeze testing helm-tests
--use-xdist`"
- - "- **Run Helm tests with specific K8s version:** `breeze testing
helm-tests --use-xdist --kubernetes-version 1.35.0`"
+ - "- **Run Helm tests with specific K8s version:** `breeze testing
helm-tests --use-xdist --kubernetes-version <version>` (bare version, e.g.
`1.35.8`, unlike the `v`-prefixed `breeze k8s` versions; allowed versions in
`breeze testing helm-tests --help`)"
- "- **Run specific Helm test type:** `breeze testing helm-tests
--use-xdist --test-type <type>` (types: `airflow_aux`, `airflow_core`,
`apiserver`, `dagprocessor`, `other`, `redis`, `security`, `statsd`,
`webserver`)"
- "- **Run other suites of tests** `breeze testing <test_group>` (test
groups: `airflow-ctl-tests`, `docker-compose-tests`, `task-sdk-tests`)"
- "- **Run scripts tests:** `uv run --project scripts pytest
scripts/tests/ -xvs`"
diff --git a/dev/skill-evals/last-eval-hash.txt
b/dev/skill-evals/last-eval-hash.txt
index f489ded32f5..23ae2f87e45 100644
--- a/dev/skill-evals/last-eval-hash.txt
+++ b/dev/skill-evals/last-eval-hash.txt
@@ -1,3 +1,3 @@
# Generated by dev/skill-evals/eval.py — do not edit or resolve conflicts by
hand.
# Run `prek run run-skill-eval --hook-stage manual --all-files` to regenerate.
-32e8c893747492d95d98e47b9244b693f9b23756c9d7502cd6aae94225e4ef27
+4e08b4a2c7b1b49ec35247e8df0e71ab24a096313f953d7531899603c775ff6c