コード例 #1
0
def main():
    start = datetime.datetime.now()

    parser = optparse.OptionParser()

    parser.add_option('-f', '--force',
        action="store_true", dest="force",
        help="Force deploy even with local changes", default=False)

    parser.add_option('-v', '--version',
        action="store", dest="version",
        help="Override the deployed version identifier", default="")

    parser.add_option('-x', '--no-up',
        action="store_true", dest="noup",
        help="Don't hg pull/up before deploy", default="")

    parser.add_option('-t', '--no-tests',
        action="store_true", dest="notests",
        help="Don't run 'make check' before deploy", default="")

    parser.add_option('--all-tests',
        action="store_true", dest="alltests",
        help="Run 'make allcheck' before deploy, instead of 'make check'",
        default="")

    parser.add_option('-s', '--no-secrets',
        action="store_true", dest="nosecrets",
        help="Don't check for production secrets.py file before deploying",
        default="")

    parser.add_option('-d', '--dryrun',
        action="store_true", dest="dryrun",
        help="Dry run without the final deploy-to-App-Engine step",
        default=False)

    parser.add_option('-r', '--report',
        action="store_true", dest="report",
        help="Generate a report that displays minified, gzipped file size for "
             "each package element",
        default=False)

    parser.add_option('-n', '--no-npm',
        action="store_false", dest="node",
        help="Don't check for local npm modules and don't install/update them",
        default=True)

    parser.add_option('-p', '--force-priming',
        action="store_true", dest="force_priming",
        help=("Prime instances after the deploy, even if a version name is "
              "specified (by default, only daily deploys with no version "
              "names have caches primed and many instances thrown up"),
        default=False)

    options, args = parser.parse_args()

    if options.node:
        print "Checking for node and dependencies"
        if not check_deps():
            return

    if options.report:
        print "Generating file size report"
        compile_handlebar_templates()
        compress.file_size_report()
        return

    includes_local_changes = hg_st()
    if not options.force and includes_local_changes:
        print "Local changes found in this directory, canceling deploy."
        return

    version = -1
    if not options.noup:
        version = hg_pull_up()
        if version <= 0:
            print "Could not find version after 'hg pull', 'hg up', 'hg tip'."
            return

    if not options.nosecrets:
        if not check_secrets():
            print "Stopping deploy. It doesn't look like you're deploying "
            print "from a directory with the appropriate secrets.py."
            return

    # Delete obsolete .pyc files, that do not have an associated .py file.
    delete_orphan_pyc_files('.')

    if not compile_templates():
        print "Failed to compile jinja templates, bailing."
        return

    if not compile_handlebar_templates():
        print "Failed to compile handlebars templates, bailing."
        return

    if not compile_less_stylesheets():
        print "Failed to compile less stylesheets, bailing."
        return

    compress_js()
    compress_css()
    compress_exercises()

    if not options.notests:
        if not run_tests(options.alltests):
            print "Some tests failed, bailing."
            return

    if not options.dryrun:
        last_version = None
        changeset_authors = []
        if options.version:
            version = options.version
        elif options.noup:
            print 'You must supply a version when deploying with --no-up'
            return
        else:
            # Default deploy from tip of tree - find the changesets delta
            # from the last daily (most likely the last prod default)
            last_version = guess_last_prod_version()
            if last_version:
                changeset_authors = get_changeset_authors(last_version)

        print "Deploying version " + str(version)

        (email, password) = get_app_engine_credentials()
        with VersionedConfigs(version): 
            success = deploy(version, email, password)
        if success:
            send_hipchat_deploy_message(last_version, version,
                                        includes_local_changes, email,
                                        changeset_authors)
            open_browser_to_ka_version(version)

            if options.force_priming or not options.version:
                # For default/daily deploys (where no version is specified)
                # and when explicitly told to, we send a bunch of requests to
                # the new version to prime it up for real users.
                prime_cache(version)
                start_many_instances(version)
            # TODO(benkomalo): auto-tag this version? But this should
            # only happen if this version gets marked as stable. How can
            # we do this so it's semi-automatic and hard to forget, but is
            # also accurate?

    end = datetime.datetime.now()
    print "Done. Duration: %s" % (end - start)
コード例 #2
0
def main():

    start = datetime.datetime.now()

    parser = optparse.OptionParser()

    parser.add_option('-f',
                      '--force',
                      action="store_true",
                      dest="force",
                      help="Force deploy even with local changes",
                      default=False)

    parser.add_option('-v',
                      '--version',
                      action="store",
                      dest="version",
                      help="Override the deployed version identifier",
                      default="")

    parser.add_option('-x',
                      '--no-up',
                      action="store_true",
                      dest="noup",
                      help="Don't hg pull/up before deploy",
                      default="")

    parser.add_option(
        '-s',
        '--no-secrets',
        action="store_true",
        dest="nosecrets",
        help="Don't check for production secrets.py file before deploying",
        default="")

    parser.add_option(
        '-d',
        '--dryrun',
        action="store_true",
        dest="dryrun",
        help="Dry run without the final deploy-to-App-Engine step",
        default=False)

    parser.add_option(
        '-r',
        '--report',
        action="store_true",
        dest="report",
        help=
        "Generate a report that displays minified, gzipped file size for each package element",
        default=False)

    parser.add_option(
        '-n',
        '--no-npm',
        action="store_false",
        dest="node",
        help="Don't check for local npm modules and don't install/update them",
        default=True)

    options, args = parser.parse_args()

    if options.node:
        print "Checking for node and dependencies"
        if not check_deps():
            return

    if options.report:
        print "Generating file size report"
        compile_handlebar_templates()
        compress.file_size_report()
        return

    includes_local_changes = hg_st()
    if not options.force and includes_local_changes:
        print "Local changes found in this directory, canceling deploy."
        return

    version = -1
    last_version = None

    if not options.noup:
        version = hg_pull_up()
        if version <= 0:
            print "Could not find version after 'hg pull', 'hg up', 'hg tip'."
            return

    if not options.nosecrets:
        if not check_secrets():
            print "Stopping deploy. It doesn't look like you're deploying from a directory with"
            print "the appropriate secrets.py."
            return

    if not compile_templates():
        print "Failed to compile jinja templates, bailing."
        return

    if not compile_handlebar_templates():
        print "Failed to compile handlebars templates, bailing."
        return

    if not compile_less_stylesheets():
        print "Failed to compile less stylesheets, bailing."
        return

    compress_js()
    compress_css()
    compress_exercises()

    if not options.dryrun:
        changeset_authors = []
        if options.version:
            version = options.version
        elif options.noup:
            print 'You must supply a version when deploying with --no-up'
            return
        else:
            # TODO(benkomalo): figure out a way to programmatically do this
            # without having the deployer enter the SHA of the current default.
            # For now, just open the versions page for the deployer.

            # Default deploy from tip of tree - find the changesets delta
            # from the last production default.
            _quiet_browser_open(
                "https://appengine.google.com/deployment?&app_id=s~khan-academy"
            )
            last_version = raw_input(
                "Changeset SHA of the current default version: ").strip()
            if last_version:
                changeset_authors = get_changeset_authors(last_version)

        print "Deploying version " + str(version)

        (email, password) = get_app_engine_credentials()
        success = deploy(version, email, password)
        if success:
            send_hipchat_deploy_message(version, includes_local_changes, email,
                                        changeset_authors)
            open_browser_to_ka_version(version)
            prime_cache(version)

    end = datetime.datetime.now()
    print "Done. Duration: %s" % (end - start)
コード例 #3
0
ファイル: deploy.py プロジェクト: johnfelipe/server
def main():

    start = datetime.datetime.now()

    parser = optparse.OptionParser()

    parser.add_option('-f', '--force',
        action="store_true", dest="force",
        help="Force deploy even with local changes", default=False)

    parser.add_option('-v', '--version',
        action="store", dest="version",
        help="Override the deployed version identifier", default="AUTO")

    parser.add_option('-x', '--no-up',
        action="store_true", dest="noup",
        help="Don't hg pull/up before deploy", default="")

    parser.add_option('-s', '--no-secrets',
        action="store_true", dest="nosecrets",
        help="Don't check for production secrets.py file before deploying", default="")

    parser.add_option('-d', '--dryrun',
        action="store_true", dest="dryrun",
        help="Dry run without the final deploy-to-App-Engine step", default=False)

    parser.add_option('-r', '--report',
        action="store_true", dest="report",
        help="Generate a report that displays minified, gzipped file size for each package element",
            default=False)

    parser.add_option('-n', '--no-npm',
        action="store_false", dest="node",
        help="Don't check for local npm modules and don't install/update them",
        default=True)

    parser.add_option('--set-default',
        action="store_true", dest="set_default_version",
        help="Set the newly created version as the default version to serve",
        default=False)

    options, args = parser.parse_args()

    if options.node:
        print "Checking for node and dependencies"
        if not check_deps():
            return

    if options.report:
        print "Generating file size report"
        compile_handlebar_templates()
        compress.file_size_report()
        return

    includes_local_changes = git_status()
    if not options.force and includes_local_changes:
        print "Local changes found in this directory, canceling deploy."
        return

    version = -1

    if not options.noup:
        version = git_pull()
        if version <= 0:
            print "Could not find version after 'hg pull', 'hg up', 'hg tip'."
            return

    if not options.nosecrets:
        if not check_secrets():
            print "Stopping deploy. It doesn't look like you're deploying from a directory with the appropriate secrets.py."
            return

    if not compile_templates():
        print "Failed to compile jinja templates, bailing."
        return

    if not compile_handlebar_templates():
        print "Failed to compile handlebars templates, bailing."
        return

    compress_js()
    compress_css()
    compress_exercises()

    if options.version:
        version = options.version
    elif options.noup:
        print 'You must supply a version when deploying with --no-up'
        return

    if version == "AUTO":
        version = time.strftime("%Y-%m-%d-") + git_version()
    print "Deploying version " + str(version)

    if not options.dryrun:
        (email, password) = get_app_engine_credentials()
        success = deploy(version, email, password)
        if success:
            # open_browser_to_ka_version(version)
            prime_cache(version)
        if options.set_default_version:
            set_default_version(version, email, password)

    end = datetime.datetime.now()
    print "Done. Duration: %s" % (end - start)
    return success
コード例 #4
0
ファイル: deploy.py プロジェクト: Xcelsziore/asthmatransition
def main():

    start = datetime.datetime.now()

    parser = optparse.OptionParser()

    parser.add_option('-f', '--force',
        action="store_true", dest="force",
        help="Force deploy even with local changes", default=False)

    parser.add_option('-v', '--version',
        action="store", dest="version",
        help="Override the deployed version identifier", default="")

    parser.add_option('-x', '--no-up',
        action="store_true", dest="noup",
        help="Don't hg pull/up before deploy", default="")

    parser.add_option('-s', '--no-secrets',
        action="store_true", dest="nosecrets",
        help="Don't check for production secrets.py file before deploying", default="")

    parser.add_option('-d', '--dryrun',
        action="store_true", dest="dryrun",
        help="Dry run without the final deploy-to-App-Engine step", default=False)

    parser.add_option('-r', '--report',
        action="store_true", dest="report",
        help="Generate a report that displays minified, gzipped file size for each package element",
            default=False)

    parser.add_option('-n', '--no-npm',
        action="store_false", dest="node",
        help="Don't check for local npm modules and don't install/update them",
        default=True)

    options, args = parser.parse_args()

    if options.node:
        print "Checking for node and dependencies"
        if not check_deps():
            return

    if options.report:
        print "Generating file size report"
        compile_handlebar_templates()
        compress.file_size_report()
        return

    includes_local_changes = hg_st()
    if not options.force and includes_local_changes:
        print "Local changes found in this directory, canceling deploy."
        return

    version = -1
    last_version = None

    if not options.noup:
        version = hg_pull_up()
        if version <= 0:
            print "Could not find version after 'hg pull', 'hg up', 'hg tip'."
            return

    if not options.nosecrets:
        if not check_secrets():
            print "Stopping deploy. It doesn't look like you're deploying from a directory with"
            print "the appropriate secrets.py."
            return

    if not compile_templates():
        print "Failed to compile jinja templates, bailing."
        return

    if not compile_handlebar_templates():
        print "Failed to compile handlebars templates, bailing."
        return

    if not compile_less_stylesheets():
        print "Failed to compile less stylesheets, bailing."
        return

    compress_js()
    compress_css()
    compress_exercises()

    if not options.dryrun:
        changeset_authors = []
        if options.version:
            version = options.version
        elif options.noup:
            print 'You must supply a version when deploying with --no-up'
            return
        else:
            # TODO(benkomalo): figure out a way to programmatically do this
            # without having the deployer enter the SHA of the current default.
            # For now, just open the versions page for the deployer.

            # Default deploy from tip of tree - find the changesets delta
            # from the last production default.
            _quiet_browser_open("https://appengine.google.com/deployment?&app_id=s~khan-academy")
            last_version = raw_input(
                    "Changeset SHA of the current default version: ").strip()
            if last_version:
                changeset_authors = get_changeset_authors(last_version)

        print "Deploying version " + str(version)

        (email, password) = get_app_engine_credentials()
        success = deploy(version, email, password)
        if success:
            send_hipchat_deploy_message(version, includes_local_changes, email, changeset_authors)
            open_browser_to_ka_version(version)
            prime_cache(version)

    end = datetime.datetime.now()
    print "Done. Duration: %s" % (end - start)
コード例 #5
0
def main():
    start = datetime.datetime.now()

    parser = optparse.OptionParser()

    parser.add_option('-f',
                      '--force',
                      action="store_true",
                      dest="force",
                      help="Force deploy even with local changes",
                      default=False)

    parser.add_option('-v',
                      '--version',
                      action="store",
                      dest="version",
                      help="Override the deployed version identifier",
                      default="")

    parser.add_option('-x',
                      '--no-up',
                      action="store_true",
                      dest="noup",
                      help="Don't hg pull/up before deploy",
                      default="")

    parser.add_option('-t',
                      '--no-tests',
                      action="store_true",
                      dest="notests",
                      help="Don't run 'make check' before deploy",
                      default="")

    parser.add_option(
        '--all-tests',
        action="store_true",
        dest="alltests",
        help="Run 'make allcheck' before deploy, instead of 'make check'",
        default="")

    parser.add_option(
        '-s',
        '--no-secrets',
        action="store_true",
        dest="nosecrets",
        help="Don't check for production secrets.py file before deploying",
        default="")

    parser.add_option(
        '-d',
        '--dryrun',
        action="store_true",
        dest="dryrun",
        help="Dry run without the final deploy-to-App-Engine step",
        default=False)

    parser.add_option(
        '-r',
        '--report',
        action="store_true",
        dest="report",
        help="Generate a report that displays minified, gzipped file size for "
        "each package element",
        default=False)

    parser.add_option(
        '-n',
        '--no-npm',
        action="store_false",
        dest="node",
        help="Don't check for local npm modules and don't install/update them",
        default=True)

    parser.add_option(
        '-p',
        '--force-priming',
        action="store_true",
        dest="force_priming",
        help=("Prime instances after the deploy, even if a version name is "
              "specified (by default, only daily deploys with no version "
              "names have caches primed and many instances thrown up"),
        default=False)

    options, args = parser.parse_args()

    if options.node:
        print "Checking for node and dependencies"
        if not check_deps():
            return

    if options.report:
        print "Generating file size report"
        compile_handlebar_templates()
        compress.file_size_report()
        return

    includes_local_changes = hg_st()
    if not options.force and includes_local_changes:
        print "Local changes found in this directory, canceling deploy."
        return

    version = -1
    if not options.noup:
        version = hg_pull_up()
        if version <= 0:
            print "Could not find version after 'hg pull', 'hg up', 'hg tip'."
            return

    if not options.nosecrets:
        if not check_secrets():
            print "Stopping deploy. It doesn't look like you're deploying "
            print "from a directory with the appropriate secrets.py."
            return

    # Delete obsolete .pyc files, that do not have an associated .py file.
    delete_orphan_pyc_files('.')

    if not compile_templates():
        print "Failed to compile jinja templates, bailing."
        return

    if not compile_handlebar_templates():
        print "Failed to compile handlebars templates, bailing."
        return

    if not compile_less_stylesheets():
        print "Failed to compile less stylesheets, bailing."
        return

    compress_js()
    compress_css()
    compress_exercises()

    if not options.notests:
        if not run_tests(options.alltests):
            print "Some tests failed, bailing."
            return

    if not options.dryrun:
        last_version = None
        changeset_authors = []
        if options.version:
            version = options.version
        elif options.noup:
            print 'You must supply a version when deploying with --no-up'
            return
        else:
            # Default deploy from tip of tree - find the changesets delta
            # from the last daily (most likely the last prod default)
            last_version = guess_last_prod_version()
            if last_version:
                changeset_authors = get_changeset_authors(last_version)

        print "Deploying version " + str(version)

        (email, password) = get_app_engine_credentials()
        with VersionedConfigs(version):
            success = deploy(version, email, password)
        if success:
            send_hipchat_deploy_message(last_version, version,
                                        includes_local_changes, email,
                                        changeset_authors)
            open_browser_to_ka_version(version)

            if options.force_priming or not options.version:
                # For default/daily deploys (where no version is specified)
                # and when explicitly told to, we send a bunch of requests to
                # the new version to prime it up for real users.
                prime_cache(version)
                start_many_instances(version)
            # TODO(benkomalo): auto-tag this version? But this should
            # only happen if this version gets marked as stable. How can
            # we do this so it's semi-automatic and hard to forget, but is
            # also accurate?

    end = datetime.datetime.now()
    print "Done. Duration: %s" % (end - start)
コード例 #6
0
def main():

    start = datetime.datetime.now()

    parser = optparse.OptionParser()

    parser.add_option('-f',
                      '--force',
                      action="store_true",
                      dest="force",
                      help="Force deploy even with local changes",
                      default=False)

    parser.add_option('-v',
                      '--version',
                      action="store",
                      dest="version",
                      help="Override the deployed version identifier",
                      default="AUTO")

    parser.add_option('-x',
                      '--no-up',
                      action="store_true",
                      dest="noup",
                      help="Don't hg pull/up before deploy",
                      default="")

    parser.add_option(
        '-s',
        '--no-secrets',
        action="store_true",
        dest="nosecrets",
        help="Don't check for production secrets.py file before deploying",
        default="")

    parser.add_option(
        '-d',
        '--dryrun',
        action="store_true",
        dest="dryrun",
        help="Dry run without the final deploy-to-App-Engine step",
        default=False)

    parser.add_option(
        '-r',
        '--report',
        action="store_true",
        dest="report",
        help=
        "Generate a report that displays minified, gzipped file size for each package element",
        default=False)

    parser.add_option(
        '-n',
        '--no-npm',
        action="store_false",
        dest="node",
        help="Don't check for local npm modules and don't install/update them",
        default=True)

    parser.add_option(
        '--set-default',
        action="store_true",
        dest="set_default_version",
        help="Set the newly created version as the default version to serve",
        default=False)

    options, args = parser.parse_args()

    if options.node:
        print "Checking for node and dependencies"
        if not check_deps():
            return

    if options.report:
        print "Generating file size report"
        compile_handlebar_templates()
        compress.file_size_report()
        return

    includes_local_changes = git_status()
    if not options.force and includes_local_changes:
        print "Local changes found in this directory, canceling deploy."
        return

    version = -1

    if not options.noup:
        version = git_pull()
        if version <= 0:
            print "Could not find version after 'hg pull', 'hg up', 'hg tip'."
            return

    if not options.nosecrets:
        if not check_secrets():
            print "Stopping deploy. It doesn't look like you're deploying from a directory with the appropriate secrets.py."
            return

    if not compile_templates():
        print "Failed to compile jinja templates, bailing."
        return

    if not compile_handlebar_templates():
        print "Failed to compile handlebars templates, bailing."
        return

    compress_js()
    compress_css()
    compress_exercises()

    if options.version:
        version = options.version
    elif options.noup:
        print 'You must supply a version when deploying with --no-up'
        return

    if version == "AUTO":
        version = time.strftime("%Y-%m-%d-") + git_version()
    print "Deploying version " + str(version)

    if not options.dryrun:
        (email, password) = get_app_engine_credentials()
        success = deploy(version, email, password)
        if success:
            # open_browser_to_ka_version(version)
            prime_cache(version)
        if options.set_default_version:
            set_default_version(version, email, password)

    end = datetime.datetime.now()
    print "Done. Duration: %s" % (end - start)
    return success