push = args.push
    gpg_key = args.gpg_key
    install_only = args.install_only
    VERBOSE = args.verbose

    ensure_checkout_is_clean()
    release_version = find_release_version()
    if not re.match("(\d+\.\d+)\.*", release_version):
        raise RuntimeError("illegal release version format: %s" % (release_version))
    major_minor_version = re.match("(\d+\.\d+)\.*", release_version).group(1)

    print("*** Preparing release version: [%s]" % release_version)

    if not skip_doc_check:
        print("*** Check for pending documentation changes")
        pending_files = update_reference_docs(release_version)
        if pending_files:
            raise RuntimeError(
                "pending coming[%s] documentation changes found in %s" % (release_version, pending_files)
            )

    run("cd dev-tools && mvn versions:set -DnewVersion=%s -DgenerateBackupPoms=false" % (release_version))
    run("cd rest-api-spec && mvn versions:set -DnewVersion=%s -DgenerateBackupPoms=false" % (release_version))
    run("mvn versions:set -DnewVersion=%s -DgenerateBackupPoms=false" % (release_version))

    remove_version_snapshot(VERSION_FILE, release_version)

    print("*** Done removing snapshot version. DO NOT COMMIT THIS, WHEN CREATING A RELEASE CANDIDATE.")

    shortHash = subprocess.check_output('git log --pretty=format:"%h" -n 1', shell=True).decode("utf-8")
    localRepo = "/tmp/elasticsearch-%s-%s" % (release_version, shortHash)
    localRepo = '%s/elasticsearch-%s-%s' % (releaseDirectory, release_version,
                                            shortHash)
    localRepoElasticsearch = localRepo + '/org/elasticsearch'

    ensure_checkout_is_clean()
    if not re.match('(\d+\.\d+)\.*', release_version):
        raise RuntimeError('illegal release version format: %s' %
                           (release_version))
    package_repo_version = '%s.x' % re.match('(\d+)\.*',
                                             release_version).group(1)

    print('*** Preparing release version: [%s]' % release_version)

    if not skip_doc_check:
        print('*** Check for pending documentation changes')
        pending_files = update_reference_docs(release_version)
        if pending_files:
            raise RuntimeError(
                'pending coming[%s] documentation changes found in %s' %
                (release_version, pending_files))

    run('cd dev-tools && mvn versions:set -DnewVersion=%s -DgenerateBackupPoms=false'
        % (release_version))
    run('cd rest-api-spec && mvn versions:set -DnewVersion=%s -DgenerateBackupPoms=false'
        % (release_version))
    run('mvn versions:set -DnewVersion=%s -DgenerateBackupPoms=false' %
        (release_version))

    remove_version_snapshot(VERSION_FILE, release_version)

    print(