azure-sdk-tools/packaging_tools/drop_tools.py
def build_package_from_pr_number(gh_token, sdk_id, pr_number, output_folder, *, with_comment=False):
    """Will clone the given PR branch and vuild the package with the given name."""

    con = Github(gh_token)
    repo = con.get_repo(sdk_id)
    sdk_pr = repo.get_pull(pr_number)
    # "get_files" of Github only download the first 300 files. Might not be enough.
    package_names = {f.filename.split('/')[0] for f in sdk_pr.get_files() if f.filename.startswith("azure")}
    absolute_output_folder = Path(output_folder).resolve()

    with tempfile.TemporaryDirectory() as temp_dir, \
            manage_git_folder(gh_token, Path(temp_dir) / Path("sdk"), sdk_id, pr_number=pr_number) as sdk_folder:

        for package_name in package_names:
            _LOGGER.debug("Build {}".format(package_name))
            execute_simple_command(
                ["python", "./build_package.py", "--dest", str(absolute_output_folder), package_name],
                cwd=sdk_folder
            )
            _LOGGER.debug("Build finished: {}".format(package_name))

    if with_comment:
        files = [f.name for f in absolute_output_folder.iterdir()]
        comment_message = None
        dashboard = DashboardCommentableObject(sdk_pr, "(message created by the CI based on PR content)")
        try:
            installation_message = build_installation_message(sdk_pr)
            download_message = build_download_message(sdk_pr, files)
            comment_message = installation_message + "\n\n" + download_message
            dashboard.create_comment(comment_message)
        except Exception:
            _LOGGER.critical("Unable to do PR comment:\n%s", comment_message)
def build_package_from_pr_number(gh_token, sdk_id, pr_number, output_folder, *, with_comment=False):
    con = Github(gh_token)
    repo = con.get_repo(sdk_id)
    sdk_pr = repo.get_pull(pr_number)
    # "get_files" of Github only download the first 300 files. Might not be enough.
    package_names = {f.filename.split('/')[0] for f in sdk_pr.get_files() if f.filename.startswith("azure")}
    absolute_output_folder = Path(output_folder).resolve()

    with tempfile.TemporaryDirectory() as temp_dir, \
            manage_git_folder(gh_token, Path(temp_dir) / Path("sdk"), sdk_id, pr_number=pr_number) as sdk_folder:

        for package_name in package_names:
            _LOGGER.debug("Build {}".format(package_name))
            execute_simple_command(
                ["python", "./build_package.py", "--dest", str(absolute_output_folder), package_name],
                cwd=sdk_folder
            )
            _LOGGER.debug("Build finished: {}".format(package_name))

    if with_comment:
        files = [f.name for f in absolute_output_folder.iterdir()]
        comment_message = None
        dashboard = DashboardCommentableObject(sdk_pr, "(message created by the CI based on PR content)")
        try:
            installation_message = build_installation_message(sdk_pr)
            download_message = build_download_message(sdk_pr, files)
            comment_message = installation_message + "\n\n" + download_message
            dashboard.create_comment(comment_message)
        except Exception:
            _LOGGER.critical("Unable to do PR comment:\n%s", comment_message)
def build_package_from_pr_number ( gh_token , sdk_id , pr_number , output_folder , * , with_comment = False ) : con = Github ( gh_token ) repo = con . get_repo ( sdk_id ) sdk_pr = repo . get_pull ( pr_number ) # "get_files" of Github only download the first 300 files. Might not be enough. package_names = { f . filename . split ( '/' ) [ 0 ] for f in sdk_pr . get_files ( ) if f . filename . startswith ( "azure" ) } absolute_output_folder = Path ( output_folder ) . resolve ( ) with tempfile . TemporaryDirectory ( ) as temp_dir , manage_git_folder ( gh_token , Path ( temp_dir ) / Path ( "sdk" ) , sdk_id , pr_number = pr_number ) as sdk_folder : for package_name in package_names : _LOGGER . debug ( "Build {}" . format ( package_name ) ) execute_simple_command ( [ "python" , "./build_package.py" , "--dest" , str ( absolute_output_folder ) , package_name ] , cwd = sdk_folder ) _LOGGER . debug ( "Build finished: {}" . format ( package_name ) ) if with_comment : files = [ f . name for f in absolute_output_folder . iterdir ( ) ] comment_message = None dashboard = DashboardCommentableObject ( sdk_pr , "(message created by the CI based on PR content)" ) try : installation_message = build_installation_message ( sdk_pr ) download_message = build_download_message ( sdk_pr , files ) comment_message = installation_message + "\n\n" + download_message dashboard . create_comment ( comment_message ) except Exception : _LOGGER . critical ( "Unable to do PR comment:\n%s" , comment_message )
Will clone the given PR branch and vuild the package with the given name.
Will clone the given PR branch and vuild the package with the given name .