Skip to content

Commit 35a3bcb

Browse files
committed
Update run_release.py
1 parent 298c8ee commit 35a3bcb

1 file changed

Lines changed: 30 additions & 29 deletions

File tree

run_release.py

Lines changed: 30 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -563,21 +563,26 @@ def create_tag(db: ReleaseShelf) -> None:
563563
)
564564

565565

566-
def wait_for_source_and_docs_artifacts(db: ReleaseShelf) -> None:
567-
# Determine if we need to wait for docs or only source artifacts.
566+
def wait_for_build_release(db: ReleaseShelf) -> None:
567+
# Determine if we need to wait for docs.
568568
release_tag = db["release"]
569569
should_wait_for_docs = release_tag.includes_docs
570570

571571
# Create the directory so it's easier to place the artifacts there.
572572
release_path = Path(db["git_repo"] / str(release_tag))
573-
src_path = release_path / "src"
574-
src_path.mkdir(parents=True, exist_ok=True)
573+
downloads_path = release_path / "downloads"
574+
downloads_path.mkdir(parents=True, exist_ok=True)
575575

576576
# Build the list of filepaths we're expecting.
577577
wait_for_paths = [
578-
src_path / f"Python-{release_tag}.tgz",
579-
src_path / f"Python-{release_tag}.tar.xz",
578+
downloads_path / f"Python-{release_tag}.tgz",
579+
downloads_path / f"Python-{release_tag}.tar.xz",
580580
]
581+
if release_tag.as_tuple() >= (3, 14):
582+
wait_for_paths += [
583+
downloads_path / f"python-{release_tag}-{arch}-linux-android.tar.gz"
584+
for arch in ["aarch64", "x86_64"]
585+
]
581586
if should_wait_for_docs:
582587
docs_path = release_path / "docs"
583588
docs_path.mkdir(parents=True, exist_ok=True)
@@ -595,12 +600,12 @@ def wait_for_source_and_docs_artifacts(db: ReleaseShelf) -> None:
595600
]
596601
)
597602

598-
print(
599-
f"Waiting for source{' and docs' if should_wait_for_docs else ''} artifacts to be built"
600-
)
601-
print(f"Artifacts should be placed at '{release_path}':")
603+
print("Once the build-release workflow is complete:")
604+
print("- Download its artifacts from the workflow summary page.")
605+
print(f"- Copy the following files into {release_path}:")
602606
for path in wait_for_paths:
603-
print(f"- '{os.path.relpath(path, release_path)}'")
607+
print(f" - {os.path.relpath(path, release_path)}")
608+
print("The script will continue once all files are present.")
604609

605610
while not all(path.exists() for path in wait_for_paths):
606611
time.sleep(1)
@@ -636,7 +641,7 @@ def sign_source_artifacts(db: ReleaseShelf) -> None:
636641
subprocess.check_call('gpg -K | grep -A 1 "^sec"', shell=True)
637642
uid = input("Please enter key ID to use for signing: ")
638643

639-
tarballs_path = Path(db["git_repo"] / str(db["release"]) / "src")
644+
tarballs_path = Path(db["git_repo"] / str(db["release"]) / "downloads")
640645
tgz = str(tarballs_path / f"Python-{db['release']}.tgz")
641646
xz = str(tarballs_path / f"Python-{db['release']}.tar.xz")
642647

@@ -678,7 +683,9 @@ def build_sbom_artifacts(db: ReleaseShelf) -> None:
678683
# For each source tarball build an SBOM.
679684
for ext in (".tgz", ".tar.xz"):
680685
tarball_name = f"Python-{release_version}{ext}"
681-
tarball_path = str(db["git_repo"] / str(db["release"]) / "src" / tarball_name)
686+
tarball_path = str(
687+
db["git_repo"] / str(db["release"]) / "downloads" / tarball_name
688+
)
682689

683690
print(f"Building an SBOM for artifact '{tarball_name}'")
684691
sbom_data = sbom.create_sbom_for_source_tarball(tarball_path)
@@ -724,7 +731,7 @@ def upload_files_to_server(db: ReleaseShelf, server: str) -> None:
724731
transport = client.get_transport()
725732
assert transport is not None, f"SSH transport to {server} is None"
726733

727-
destination = Path(f"/home/psf-users/{db['ssh_user']}/{db['release']}")
734+
destination = Path(f"/home/{db['ssh_user']}/{db['release']}")
728735
ftp_client = MySFTPClient.from_transport(transport)
729736
assert ftp_client is not None, f"SFTP client to {server} is None"
730737

@@ -750,7 +757,7 @@ def upload_subdir(subdir: str) -> None:
750757
if server == DOCS_SERVER:
751758
upload_subdir("docs")
752759
elif server == DOWNLOADS_SERVER:
753-
upload_subdir("src")
760+
upload_subdir("downloads")
754761
if (artifacts_path / "docs").exists():
755762
upload_subdir("docs")
756763

@@ -769,7 +776,7 @@ def place_files_in_download_folder(db: ReleaseShelf) -> None:
769776
transport = client.get_transport()
770777
assert transport is not None, f"SSH transport to {DOWNLOADS_SERVER} is None"
771778

772-
# Sources
779+
# Downloads
773780

774781
source = f"/home/psf-users/{db['ssh_user']}/{db['release']}"
775782
destination = f"/srv/www.python.org/ftp/python/{db['release'].normalized()}"
@@ -781,7 +788,7 @@ def execute_command(command: str) -> None:
781788
raise ReleaseException(channel.recv_stderr(1000))
782789

783790
execute_command(f"mkdir -p {destination}")
784-
execute_command(f"cp {source}/src/* {destination}")
791+
execute_command(f"cp {source}/downloads/* {destination}")
785792
execute_command(f"chgrp downloads {destination}")
786793
execute_command(f"chmod 775 {destination}")
787794
execute_command(f"find {destination} -type f -exec chmod 664 {{}} \\;")
@@ -880,7 +887,7 @@ def get_origin_remote_url(git_repo: Path) -> str:
880887
return origin_remote_url
881888

882889

883-
def start_build_of_source_and_docs(db: ReleaseShelf) -> None:
890+
def start_build_release(db: ReleaseShelf) -> None:
884891
commit_sha = get_commit_sha(db["release"].gitname, db["git_repo"])
885892
origin_remote_url = get_origin_remote_url(db["git_repo"])
886893
origin_remote_github_owner = extract_github_owner(origin_remote_url)
@@ -922,8 +929,8 @@ def start_build_of_source_and_docs(db: ReleaseShelf) -> None:
922929
)
923930
print()
924931

925-
if not ask_question("Have you started the source and docs build?"):
926-
raise ReleaseException("Source and docs build must be started")
932+
if not ask_question("Have you started the build-release workflow?"):
933+
raise ReleaseException("build-release workflow must be started")
927934

928935

929936
def send_email_to_platform_release_managers(db: ReleaseShelf) -> None:
@@ -936,7 +943,7 @@ def send_email_to_platform_release_managers(db: ReleaseShelf) -> None:
936943
print(f"{github_prefix}/{db['release'].gitname}")
937944
print(f"Git commit SHA: {commit_sha}")
938945
print(
939-
"Source/docs build: https://github.com/python/release-tools/actions/runs/[ENTER-RUN-ID-HERE]"
946+
"build-release workflow: https://github.com/python/release-tools/actions/runs/[ENTER-RUN-ID-HERE]"
940947
)
941948
print()
942949

@@ -1363,18 +1370,12 @@ def _api_key(api_key: str) -> str:
13631370
Task(check_cpython_repo_is_clean, "Checking Git repository is clean"),
13641371
Task(create_tag, "Create tag"),
13651372
Task(push_to_local_fork, "Push new tags and branches to private fork"),
1366-
Task(
1367-
start_build_of_source_and_docs,
1368-
"Start the builds for source and docs artifacts",
1369-
),
1373+
Task(start_build_release, "Start the build-release workflow"),
13701374
Task(
13711375
send_email_to_platform_release_managers,
13721376
"Platform release managers have been notified of the commit SHA",
13731377
),
1374-
Task(
1375-
wait_for_source_and_docs_artifacts,
1376-
"Wait for source and docs artifacts to build",
1377-
),
1378+
Task(wait_for_build_release, "Wait for build-release workflow"),
13781379
Task(check_doc_unreleased_version, "Check docs for `(unreleased)`"),
13791380
Task(build_sbom_artifacts, "Building SBOM artifacts"),
13801381
*([] if no_gpg else [Task(sign_source_artifacts, "Sign source artifacts")]),

0 commit comments

Comments
 (0)