Exemple #1
0
def get_current_milestone(repo: str, patch_version: Optional[int] = None) -> Dict:
    milestones = get_latest_milestones(repo)
    if patch_version is None:
        patch_version = get_patch_version()
    milestone_version = f"v{patch_version}"
    result = next((milestone for milestone in milestones if milestone["title"] == milestone_version), None)
    if result is None:
        raise AssertionError(f"Milestone `{milestone_version}` doesn't exist")
    return result
def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--token",
                        type=str,
                        required=True,
                        help="github token")

    args = parser.parse_args()

    repo = env("GITHUB_REPOSITORY")
    milestones = get_latest_milestones(repo)
    milestones.sort(key=lambda milestone: milestone["title"], reverse=True)

    patch_version = get_patch_version()
    milestone_version = f"v{patch_version}"
    current_milestone = next((milestone for milestone in milestones
                              if milestone["title"] == milestone_version),
                             None)
    # do nothing if milestone with expected title is already created
    if current_milestone is not None:
        return

    prev_milestone_version = f"v{patch_version - 1}"
    prev_milestone = next((milestone for milestone in milestones
                           if milestone["title"] == prev_milestone_version),
                          None)
    due_on = None
    if prev_milestone is not None and prev_milestone["due_on"] is not None:
        date = datetime.strptime(prev_milestone["due_on"],
                                 "%Y-%m-%dT%H:%M:%SZ") + timedelta(weeks=2)
        due_on = "%04d-%02d-%02dT%02d:%02d:%02dZ" % (date.year, date.month,
                                                     date.day, date.hour,
                                                     date.minute, date.second)

    maintainers = [
        "Undin", "ortem", "mchernyavsky", "vlad20012", "dima74", "avrong",
        "ozkriff"
    ]

    for m in milestones:
        if len(maintainers) == 1:
            break
        desc = m["description"]
        res = re.search(RELEASE_MANAGER_RE, desc)
        if res is not None:
            try:
                maintainers.remove(res.group(1))
            except ValueError:
                pass

    description = f"Release manager: @{maintainers[0]}"
    create_milestone(repo,
                     args.token,
                     milestone_version,
                     description=description,
                     due_on=due_on)
def main() -> None:
    parser = argparse.ArgumentParser()
    parser.add_argument("--token", type=str, required=True)
    parser.add_argument("--repo_owner", type=str, required=True)
    parser.add_argument("--repo_name", type=str, required=True)
    args = parser.parse_args()

    repo = env("GITHUB_REPOSITORY")
    # the script is supposed to be invoked only after release branch creation
    # so we need previous patch version
    release_patch_version = get_patch_version() - 1
    changelog_repo = f"{args.repo_owner}/{args.repo_name}"
    branch_name = changelog_branch_name(release_patch_version)

    branches = get_all_branches(changelog_repo, args.token)
    existing_branch = next(
        (branch["name"]
         for branch in branches if branch["name"].endswith(branch_name)), None)
    if existing_branch is not None:
        print(
            f"Branch for v{release_patch_version} release already exists: `{existing_branch}`"
        )
        return

    milestone = get_current_milestone(repo, release_patch_version)

    # TODO: find out more correct way to parse data
    release_date = datetime.strptime(milestone["due_on"],
                                     "%Y-%m-%dT%H:%M:%SZ").date()
    today = date.today()
    if today >= release_date or milestone["state"] == "closed":
        print(f"Milestone v{release_patch_version} is over")
        return

    delta = release_date - today
    five_days = timedelta(5)

    if delta > five_days:
        print("Too early to create release changelog")
        return

    add_changelog_template(args.token, release_patch_version, args.repo_name)
    create_changelog_pull_request(changelog_repo, args.token,
                                  release_patch_version, milestone)
import argparse

from common import get_patch_version, inc_patch_version, GRADLE_PROPERTIES, git_command, construct_repository_url

if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument("--token", type=str, help="github token")

    args = parser.parse_args()

    repo_url = construct_repository_url(args.token)

    patch_version = get_patch_version()

    release_branch = f"release-{patch_version}"
    git_command("branch", release_branch)
    git_command("push", repo_url, release_branch)

    inc_patch_version()

    git_command("add", GRADLE_PROPERTIES)
    git_command("commit", "-m", ":arrow_up: patch version")
    git_command("push", repo_url, "master")