def __init__(self,
              alias,
              restart_from,
              default_conf=None,
              marketplace_conf=None):
     self.alias = alias
     self.restart_from = restart_from
     if marketplace_conf == '':
         marketplace_conf = DEFAULT_MP_CONF_URL
     self.marketplace_conf = marketplace_conf
     cwd = os.getcwd()
     if os.path.isdir(os.path.join(cwd, "marketplace")):
         pass
     elif os.path.split(cwd)[1] == "marketplace":
         cwd = os.path.abspath(os.path.join(cwd, os.pardir))
     else:
         if '__file__' not in locals():
             __file__ = inspect.getframeinfo(
                 inspect.currentframe())[0]  # @ReservedAssignment
         cwd = os.path.dirname(os.path.abspath(__file__))
         cwd = os.path.abspath(os.path.join(cwd, os.pardir))
     log("Nuxeo source location: %s" % cwd)
     self.repo = Repository(cwd, self.alias)
     self.defaults = {}
     if default_conf:
         default_info = ReleaseInfo()
         default_info.read_release_log(default_conf)
         prefix = default_info.module
         for key, value in vars(default_info).iteritems():
             self.defaults[prefix + "-" + key] = str(value)
     self.mp_config = self.repo.get_mp_config(self.marketplace_conf,
                                              self.defaults)
Exemple #2
0
 def __init__(self, alias, restart_from, default_conf=None, marketplace_conf=None):
     self.alias = alias
     self.restart_from = restart_from
     if marketplace_conf == '':
         marketplace_conf = DEFAULT_MP_CONF_URL
     self.marketplace_conf = marketplace_conf
     cwd = os.getcwd()
     if os.path.isdir(os.path.join(cwd, "marketplace")):
         pass
     elif os.path.split(cwd)[1] == "marketplace":
         cwd = os.path.abspath(os.path.join(cwd, os.pardir))
     else:
         if '__file__' not in locals():
             __file__ = inspect.getframeinfo(inspect.currentframe())[0]  # @ReservedAssignment
         cwd = os.path.dirname(os.path.abspath(__file__))
         cwd = os.path.abspath(os.path.join(cwd, os.pardir))
     log("Nuxeo source location: %s" % cwd)
     self.repo = Repository(cwd, self.alias)
     self.defaults = {}
     if default_conf:
         default_info = ReleaseInfo()
         default_info.read_release_log(default_conf)
         prefix = default_info.module
         for key, value in vars(default_info).iteritems():
             self.defaults[prefix + "-" + key] = str(value)
     self.mp_config = self.repo.get_mp_config(self.marketplace_conf, self.defaults)
Exemple #3
0
 def perform(self, dryrun=False):
     """ Perform the release: push source, deploy artifacts and upload
     packages."""
     cwd = os.getcwd()
     marketplaces_skipped = []
     for marketplace in self.get_packages_list():
         log("")
         if self.mp_config.has_option(marketplace, "skip"):
             log("[WARN] Skipped '%s' (%s)" %
                 (marketplace, self.mp_config.get(marketplace, "skip")))
             marketplaces_skipped.append(marketplace)
             upgrade_only = True
         else:
             upgrade_only = False
         if not self.mp_config.getboolean(marketplace, "prepared"):
             log("[WARN] Skipped '%s' (%s)" % (marketplace, "Not prepared"))
             continue
         if self.mp_config.getboolean(marketplace, "performed"):
             log("Skipped '%s' (%s)" % (marketplace, "Already performed"))
             continue
         try:
             if upgrade_only:
                 log("Upgrade skipped %s..." % marketplace)
             else:
                 log("Perform %s" % marketplace)
             os.chdir(os.path.join(self.repo.mp_dir, marketplace))
             mp_repo = Repository(os.getcwd(), self.alias)
             # Perform release
             release_info = ReleaseInfo()
             release_info.read_release_log(
                 ReleaseInfo.get_release_log(mp_repo.basedir))
             mp_release = Release(mp_repo, release_info)
             mp_release.perform(dryrun=dryrun, upgrade_only=upgrade_only)
             performed = True
         except Exception, e:
             stack = traceback.format_exc()
             if hasattr(e, 'message') and e.message is not None:
                 stack = e.message + "\n" + stack
             log("[ERROR] %s" % stack)
             performed = False
             stack = stack.replace("%", "%%")
             self.mp_config.set(marketplace, "skip", "Failed! %s" % stack)
         self.mp_config.set(marketplace, "performed", str(performed))
         self.repo.save_mp_config(self.mp_config)
         if performed and not upgrade_only:
             owner = None
             if self.mp_config.has_option(marketplace, "owner"):
                 owner = self.mp_config.get(marketplace, "owner")
             creds = ":".join(self.nos_credentials().prod)
             self.upload(creds,
                         CONNECT_PROD_URL,
                         marketplace,
                         dryrun=dryrun,
                         owner=owner)
Exemple #4
0
 def perform(self, dryrun=False):
     """ Perform the release: push source, deploy artifacts and upload
     packages."""
     cwd = os.getcwd()
     marketplaces_skipped = []
     for marketplace in self.get_packages_list():
         log("")
         if self.mp_config.has_option(marketplace, "skip"):
             log("[WARN] Skipped '%s' (%s)" % (marketplace, self.mp_config.get(marketplace, "skip")))
             marketplaces_skipped.append(marketplace)
             upgrade_only = True
         else:
             upgrade_only = False
         if not self.mp_config.getboolean(marketplace, "prepared"):
             log("[WARN] Skipped '%s' (%s)" % (marketplace, "Not prepared"))
             continue
         if self.mp_config.getboolean(marketplace, "performed"):
             log("Skipped '%s' (%s)" % (marketplace, "Already performed"))
             continue
         try:
             if upgrade_only:
                 log("Upgrade skipped %s..." % marketplace)
             else:
                 log("Perform %s" % marketplace)
             os.chdir(os.path.join(self.repo.mp_dir, marketplace))
             mp_repo = Repository(os.getcwd(), self.alias)
             # Perform release
             release_info = ReleaseInfo()
             release_info.read_release_log(ReleaseInfo.get_release_log(mp_repo.basedir))
             mp_release = Release(mp_repo, release_info)
             mp_release.perform(dryrun=dryrun, upgrade_only=upgrade_only)
             performed = True
         except Exception, e:
             stack = traceback.format_exc()
             if hasattr(e, 'message') and e.message is not None:
                 stack = e.message + "\n" + stack
             log("[ERROR] %s" % stack)
             performed = False
             stack = stack.replace("%", "%%")
             self.mp_config.set(marketplace, "skip", "Failed! %s" % stack)
         self.mp_config.set(marketplace, "performed", str(performed))
         self.repo.save_mp_config(self.mp_config)
         if performed and not upgrade_only:
             owner = None
             if self.mp_config.has_option(marketplace, "owner"):
                 owner = self.mp_config.get(marketplace, "owner")
             self.upload(CONNECT_PROD_URL, marketplace, dryrun=dryrun, owner=owner)
Exemple #5
0
    def assertNextSnapshot(self, current, expected, policy='auto_last'):
        self.mocks.etree_parse.return_value.getroot.return_value.find.return_value.text = current

        release_info = ReleaseInfo(branch='some_branch',
                                   tag='auto',
                                   maintenance_version='auto',
                                   is_final=True,
                                   auto_increment_policy=policy)
        self.assertEqual(
            expected,
            Release(Repository(os.getcwd(), 'nuxeo_scripts'),
                    release_info).next_snapshot)
    def prepare(self, dryrun=False):
        """ Prepare the release."""
        cwd = os.getcwd()
        if not os.path.isdir(self.repo.mp_dir):
            self.clone()
        os.chdir(self.repo.mp_dir)
        marketplaces_skipped = []
        for marketplace in self.get_packages_list():
            log("")
            if self.mp_config.has_option(marketplace, "skip"):
                log("[%s]" % marketplace)
                log("[WARN] Skipped '%s' (%s)" %
                    (marketplace, self.mp_config.get(marketplace, "skip")))
                marketplaces_skipped.append(marketplace)
                upgrade_only = True
            else:
                upgrade_only = False
            if self.mp_config.getboolean(marketplace, "prepared"):
                log("[%s]" % marketplace)
                log("Skipped '%s' (%s)" % (marketplace, "Already prepared"))
                continue
            try:
                mp_dir = os.path.join(self.repo.mp_dir, marketplace)
                if not os.path.isdir(mp_dir):
                    os.chdir(self.repo.mp_dir)
                    self.repo.git_pull(
                        marketplace, self.mp_config.get(marketplace, "branch"))
                else:
                    log("[%s]" % marketplace)
                os.chdir(mp_dir)
                mp_repo = Repository(os.getcwd(), self.alias)
                if upgrade_only:
                    log("Upgrade skipped %s..." % marketplace)
                else:
                    log("Prepare release of %s..." % marketplace)

                release_info = ReleaseInfo(
                    module=marketplace,
                    remote_alias=self.alias,
                    branch=self.mp_config.get(marketplace, "branch"),
                    tag=self.mp_config.get(marketplace, "tag"),
                    next_snapshot=self.mp_config.get(marketplace,
                                                     "next_snapshot"),
                    maintenance_version=self.mp_config.get(
                        marketplace, "maintenance_version"),
                    is_final=self.mp_config.getboolean(marketplace,
                                                       "is_final"),
                    skip_tests=self.mp_config.getboolean(
                        marketplace, "skipTests"),
                    skip_its=self.mp_config.getboolean(marketplace, "skipITs"),
                    profiles=self.mp_config.get(marketplace, "profiles"),
                    other_versions=self.mp_config.get(marketplace,
                                                      "other_versions"),
                    #files_pattern, props_pattern, msg_commit, msg_tag,
                    auto_increment_policy=self.mp_config.get(
                        marketplace, "auto_increment_policy"),
                    dryrun=dryrun)
                mp_release = Release(mp_repo, release_info)
                release_log = mp_release.log_summary()
                release_info.read_release_log(release_log)
                if dryrun:
                    print "DEBUG -- init %s with:" % marketplace
                for key, value in vars(release_info).iteritems():
                    if dryrun:
                        print "DEBUG: %s-%s=%s" % (marketplace, key, value)
                    self.mp_config.set("DEFAULT", marketplace + "-" + key,
                                       str(value))
                if dryrun:
                    print

                mp_release.prepare(dryrun=dryrun,
                                   upgrade_only=upgrade_only,
                                   dodeploy=True)
                prepared = True
            except Exception, e:
                stack = traceback.format_exc()
                if hasattr(e, 'message') and e.message is not None:
                    stack = e.message + "\n" + stack
                log("[ERROR] %s" % stack)
                prepared = False
                stack = stack.replace("%", "%%")
                self.mp_config.set(marketplace, "skip", "Failed! %s" % stack)
            self.mp_config.set(marketplace, "prepared", str(prepared))
            self.repo.save_mp_config(self.mp_config)
            if prepared and not upgrade_only:
                self.upload(CONNECT_TEST_URL, marketplace, dryrun=dryrun)
Exemple #7
0
    def prepare(self, dryrun=False):
        """ Prepare the release."""
        cwd = os.getcwd()
        if not os.path.isdir(self.repo.mp_dir):
            self.clone()
        os.chdir(self.repo.mp_dir)
        marketplaces_skipped = []
        for marketplace in self.get_packages_list():
            log("")
            if self.mp_config.has_option(marketplace, "skip"):
                log("[%s]" % marketplace)
                log("[WARN] Skipped '%s' (%s)" % (marketplace, self.mp_config.get(marketplace, "skip")))
                marketplaces_skipped.append(marketplace)
                upgrade_only = True
            else:
                upgrade_only = False
            if self.mp_config.getboolean(marketplace, "prepared"):
                log("[%s]" % marketplace)
                log("Skipped '%s' (%s)" % (marketplace, "Already prepared"))
                continue
            try:
                mp_dir = os.path.join(self.repo.mp_dir, marketplace)
                if not os.path.isdir(mp_dir):
                    os.chdir(self.repo.mp_dir)
                    self.repo.git_pull(marketplace, self.mp_config.get(marketplace, "branch"))
                else:
                    log("[%s]" % marketplace)
                os.chdir(mp_dir)
                mp_repo = Repository(os.getcwd(), self.alias)
                if upgrade_only:
                    log("Upgrade skipped %s..." % marketplace)
                else:
                    log("Prepare release of %s..." % marketplace)

                release_info = ReleaseInfo(module=marketplace, remote_alias=self.alias,
                                           branch=self.mp_config.get(marketplace, "branch"),
                                           tag=self.mp_config.get(marketplace, "tag"),
                                           next_snapshot=self.mp_config.get(marketplace, "next_snapshot"),
                                           maintenance_version=self.mp_config.get(marketplace, "maintenance_version"),
                                           is_final=self.mp_config.getboolean(marketplace, "is_final"),
                                           skip_tests=self.mp_config.getboolean(marketplace, "skipTests"),
                                           skip_its=self.mp_config.getboolean(marketplace, "skipITs"),
                                           profiles=self.mp_config.get(marketplace, "profiles"),
                                           other_versions=self.mp_config.get(marketplace, "other_versions"),
                                           #files_pattern, props_pattern, msg_commit, msg_tag,
                                           auto_increment_policy=self.mp_config.get(marketplace,
                                                                                    "auto_increment_policy"),
                                           dryrun=dryrun)
                mp_release = Release(mp_repo, release_info)
                release_log = mp_release.log_summary()
                release_info.read_release_log(release_log)
                if dryrun:
                    print "DEBUG -- init %s with:" % marketplace
                for key, value in vars(release_info).iteritems():
                    if dryrun:
                        print "DEBUG: %s-%s=%s" % (marketplace, key, value)
                    self.mp_config.set("DEFAULT", marketplace + "-" + key, str(value))
                if dryrun:
                    print

                mp_release.prepare(dryrun=dryrun, upgrade_only=upgrade_only, dodeploy=True)
                prepared = True
            except Exception, e:
                stack = traceback.format_exc()
                if hasattr(e, 'message') and e.message is not None:
                    stack = e.message + "\n" + stack
                log("[ERROR] %s" % stack)
                prepared = False
                stack = stack.replace("%", "%%")
                self.mp_config.set(marketplace, "skip", "Failed! %s" % stack)
            self.mp_config.set(marketplace, "prepared", str(prepared))
            self.repo.save_mp_config(self.mp_config)
            if prepared and not upgrade_only:
                owner = None
                if self.mp_config.has_option(marketplace, "owner"):
                    owner = self.mp_config.get(marketplace, "owner")
                self.upload(CONNECT_TEST_URL, marketplace, dryrun=dryrun, owner=owner)