Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions dev/README_RELEASE_AIRFLOW.md
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,7 @@ uv tool install -e ./dev/breeze
--version ${VERSION_RC} \
--previous-version ${PREVIOUS_VERSION} \
--task-sdk-version ${TASK_SDK_VERSION_RC} \
--sync-branch ${SYNC_BRANCH} \
--remote-name upstream \
--dry-run
```
Expand Down Expand Up @@ -1010,7 +1011,6 @@ export AIRFLOW_REPO_ROOT=$(pwd)
# start the release process by running the below command
breeze release-management start-release \
--version ${VERSION} \
--previous-release ${PREVIOUS_RELEASE} \
--task-sdk-version ${TASK_SDK_VERSION}
```

Expand Down Expand Up @@ -1047,11 +1047,11 @@ the older branches, you should set the "skip" field to true.
```shell script
for PYTHON in 3.10 3.11 3.12 3.13
do
docker pull apache/airflow:${VERSION_RC}-python${PYTHON}
breeze prod-image verify --image-name apache/airflow:${VERSION_RC}-python${PYTHON}
docker pull apache/airflow:${VERSION}-python${PYTHON}
breeze prod-image verify --image-name apache/airflow:${VERSION}-python${PYTHON}
done
docker pull apache/airflow:${VERSION_RC}
breeze prod-image verify --image-name apache/airflow:${VERSION_RC}
docker pull apache/airflow:${VERSION}
breeze prod-image verify --image-name apache/airflow:${VERSION}
```

## Publish final documentation
Expand Down Expand Up @@ -1222,17 +1222,6 @@ EOF
------------------------------------------------------------------------------------------------------------
Announcement is done from official Apache-Airflow accounts.

* LinkedIn: https://www.linkedin.com/company/apache-airflow/
* Fosstodon: https://fosstodon.org/@airflow
* Bluesky: https://bsky.app/profile/apache-airflow.bsky.social

Make sure attach the release image generated with Figma to the post.
If you don't have access to the account ask a PMC member to post.

------------------------------------------------------------------------------------------------------------

Tweet and post on Linkedin about the release:

```shell
cat <<EOF
We've just released Apache Airflow $VERSION 🎉
Expand All @@ -1246,6 +1235,17 @@ Thanks to all the contributors who made this possible.
EOF
```

Post on social media about the release:

* LinkedIn: https://www.linkedin.com/company/apache-airflow/
* Fosstodon: https://fosstodon.org/@airflow
* Bluesky: https://bsky.app/profile/apache-airflow.bsky.social

Make sure to attach the release image generated with Figma to the post.
If you don't have access to the account ask a PMC member to post.

------------------------------------------------------------------------------------------------------------

## Update `main` with the latest release details

This includes:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,22 @@ def create_artifacts_with_docker():
console_print("[success]Airflow and Task SDK artifacts created")


def test_airflow():
console_print("[info]Testing Airflow: Please perform the actions below before proceeding.")
console_print("[info]Run these commands in a separate shell in the current directory.")
console_print("[info] ❯ docker run -it -v ./dist:/dist -p 8080:8080 python:3.12 /bin/bash")
console_print("[info] root@6b802a7fedab:/# pip install uv && uv venv && source .venv/bin/activate")
console_print(
"[info] root@6b802a7fedab:/# uv pip install ./dist/apache_airflow-*.whl ./dist/apache_airflow_core-*.whl ./dist/apache_airflow_task_sdk-*-py3-none-any.whl"
)
console_print("[info] (.venv) root@6b802a7fedab:/# airflow standalone")
confirm_action(
"I have tested airflow as instructed above. "
"I installed and ran a DAG with it and there's no issue. Do you agree to the above?",
abort=True,
)


def sign_the_release(repo_root):
if confirm_action("Do you want to sign the release?"):
os.chdir(f"{repo_root}/dist")
Expand Down Expand Up @@ -473,8 +489,8 @@ def move_artifacts_to_svn(
shell=True,
)
console_print("[success]Moved artifacts to SVN:")
run_command([f"ls {repo_root}/asf-dist/dev/airflow/{version}"])
run_command([f"ls {repo_root}/asf-dist/dev/airflow/task-sdk/{task_sdk_version}"])
run_command([f"ls {version}/"])
run_command([f"ls task-sdk/{task_sdk_version}/"])


def push_artifacts_to_asf_repo(version, task_sdk_version, repo_root):
Expand Down Expand Up @@ -768,6 +784,8 @@ def publish_release_candidate(
tarball_type=TarBallType.AIRFLOW,
tag=version,
)
# test airflow
test_airflow()
# Sign the release
sign_the_release(airflow_repo_root)
# Tag and push constraints
Expand Down
3 changes: 3 additions & 0 deletions dev/breeze/src/airflow_breeze/commands/release_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,9 @@ def remove_old_release(version, task_sdk_version, svn_release_repo):
if entry.name == version:
# Don't remove the current release
continue
if entry.name == "2.11.0":
# Don't remove airflow 2.11.0
continue
if entry.is_dir() and RELEASE_PATTERN.match(entry.name):
old_airflow_releases.append(entry.name)
old_airflow_releases.sort()
Expand Down
7 changes: 2 additions & 5 deletions dev/breeze/tests/test_release_candidate_command.py
Original file line number Diff line number Diff line change
Expand Up @@ -423,11 +423,8 @@ def fake_run_command(cmd: list[str] | str, **kwargs):
)
assert "[success]Moved artifacts to SVN:" in console_messages
# Verify ls commands
assert any(cmd == [f"ls {repo_root}/asf-dist/dev/airflow/{version}"] for cmd, kwargs in run_command_calls)
assert any(
cmd == [f"ls {repo_root}/asf-dist/dev/airflow/task-sdk/{task_sdk_version}"]
for cmd, kwargs in run_command_calls
)
assert any(cmd == [f"ls {version}/"] for cmd, kwargs in run_command_calls)
assert any(cmd == [f"ls task-sdk/{task_sdk_version}/"] for cmd, kwargs in run_command_calls)


def test_push_artifacts_to_asf_repo_returns_early_when_user_declines(monkeypatch, rc_cmd):
Expand Down