| import os |
| from functions import get_release_prs, get_files_for_pr, update_lockfiles, clone_repo |
| |
| lockfile_names = {"MODULE.bazel.lock", "src/test/tools/bzlmod/MODULE.bazel.lock"} |
| original_pr_number = os.environ["PR_NUMBER"] |
| original_pr_files_list = get_files_for_pr(original_pr_number) |
| can_proceed = False |
| for f in original_pr_files_list: |
| if f["filename"] in lockfile_names: |
| can_proceed = True |
| break |
| |
| if can_proceed == False: |
| print("The PR does not contain any lockfile. Therefore, it does not require lockfile updates") |
| raise SystemExit(0) |
| |
| release_branch = os.environ["RELEASE_BRANCH"] |
| |
| release_version = release_branch.split("release-")[1] |
| |
| milestone_name = release_version + " release blockers" |
| |
| # Get a list of the prs made to the release branch |
| pr_list = get_release_prs(release_branch) |
| |
| # Get all the files from each PR and find out if any of the files is a lockfile and update the lockfile if a pr contains any lockfile |
| requires_clone = True |
| for pr in pr_list: |
| pr["lockfiles"] = set() |
| files_list = get_files_for_pr(pr["number"]) |
| for file in files_list: |
| if file["filename"] in lockfile_names: |
| pr["lockfiles"].add(file["filename"]) |
| if len(pr["lockfiles"]) > 0: |
| if requires_clone == True: clone_repo() |
| try: |
| update_lockfiles(pr["lockfiles"], pr["head"]["ref"], release_branch, lockfile_names) |
| except Exception as e: |
| print(f"Failed updating lockfiles: {pr['number']} in {pr['head']['ref']}") |
| requires_clone = False |