Beispiel #1
0
 def process_configs(repo, attempt):
     """Helper method that encapsulates all of the things necessary
        to run release runner for all releases."""
     log.info("Bumping %s, attempt #%s" % (repo, attempt))
     for release in rr.new_releases:
         rr.update_status(release, 'Writing configs')
         l10nContents = rr.get_release_l10n(release['name'])
         tags.extend(getTags(
             getBaseTag(release['product'], release['version']),
             release['buildNumber'])
         )
         update(configs_workdir, revision='default')
         cfgFile = getReleaseConfigName(
             release['product'], path.basename(release['branch']),
             release['version'], staging)
         bump_configs(release=release, cfgFile=cfgFile,
                      l10nContents=l10nContents, workdir=configs_workdir,
                      hg_username=hg_username,
                      productionBranch=buildbot_configs_branch)
         rr.update_status(release, 'Running release sanity')
         rs_args = get_release_sanity_args(configs_workdir, release,
                                           cfgFile, masters_json,
                                           buildbot_configs_branch)
         release_sanity_script = "%s/buildbot-helpers/release_sanity.py" % tools_workdir
         run_cmd(['python', release_sanity_script] + rs_args +
                 ['--dry-run'])
         rr.update_status(
             release, 'Waiting for other releases to run release sanity'
         )
Beispiel #2
0
 def process_configs(repo, attempt):
     """Helper method that encapsulates all of the things necessary
        to run release runner for all releases."""
     log.info("Bumping %s, attempt #%s" % (repo, attempt))
     for release in rr.new_releases:
         rr.update_status(release, 'Writing configs')
         l10nContents = rr.get_release_l10n(release['name'])
         tags.update(
             getTags(getBaseTag(release['product'], release['version']),
                     release['buildNumber']))
         update(configs_workdir, revision='default')
         cfgFile = getReleaseConfigName(release['product'],
                                        path.basename(release['branch']),
                                        release['version'], staging)
         bump_configs(release=release,
                      cfgFile=cfgFile,
                      l10nContents=l10nContents,
                      workdir=configs_workdir,
                      hg_username=hg_username,
                      productionBranch=buildbot_configs_branch)
         rr.update_status(release, 'Running release sanity')
         rs_args = get_release_sanity_args(configs_workdir, release,
                                           cfgFile, masters_json,
                                           buildbot_configs_branch)
         release_sanity_script = "%s/buildbot-helpers/release_sanity.py" % tools_workdir
         run_cmd(['python', release_sanity_script] + rs_args +
                 ['--dry-run'])
         rr.update_status(
             release, 'Waiting for other releases to run release sanity')
Beispiel #3
0
 def testStaging(self):
     got = getReleaseConfigName('fennec', 'mozilla-release', staging=True)
     self.assertEquals('staging_release-fennec-mozilla-release.py', got)
Beispiel #4
0
 def testThunderbird(self):
     got = getReleaseConfigName('thunderbird', 'comm-esr24')
     self.assertEquals('release-thunderbird-comm-esr24.py', got)
Beispiel #5
0
 def testFirefox(self):
     got = getReleaseConfigName('firefox', 'mozilla-release')
     self.assertEquals('release-firefox-mozilla-release.py', got)
Beispiel #6
0
 def testFennec(self):
     got = getReleaseConfigName('fennec', 'mozilla-beta')
     self.assertEquals('release-fennec-mozilla-beta.py', got)
 def testThunderbird(self):
     got = getReleaseConfigName('thunderbird', 'comm-esr31')
     self.assertEquals('release-thunderbird-comm-esr31.py', got)
Beispiel #8
0
 def testFennecRelease(self):
     got = getReleaseConfigName('fennec', 'mozilla-release', '35.0')
     self.assertEquals('release-fennec-mozilla-release.py', got)
Beispiel #9
0
 def testFirefoxBetaHackery(self):
     got = getReleaseConfigName('firefox', 'mozilla-release', '38.0b7')
     self.assertEquals('release-firefox-mozilla-beta.py', got)
 def testFirefoxBetaHackery(self):
     got = getReleaseConfigName('firefox', 'mozilla-release', '38.0b7')
     self.assertEquals('release-firefox-mozilla-beta.py', got)
Beispiel #11
0
 def testFennecBetaHackery(self):
     got = getReleaseConfigName('fennec', 'mozilla-release', '35.0b1')
     self.assertEquals('release-fennec-mozilla-beta.py', got)
 def testFennecRelease(self):
     got = getReleaseConfigName('fennec', 'mozilla-release', '35.0')
     self.assertEquals('release-fennec-mozilla-release.py', got)
 def testFennecBetaHackery(self):
     got = getReleaseConfigName('fennec', 'mozilla-release', '35.0b1')
     self.assertEquals('release-fennec-mozilla-beta.py', got)
Beispiel #14
0
        # logs and manual intervention, it's not worth the pain and ugliness
        # to do more than this.
        for release in rr.new_releases:
            rr.mark_as_failed(release, 'Failed: %s' % repr(e))
        raise

    rc = 0
    for release in rr.new_releases:
        try:
            rr.update_status(release, 'Running sendchange command')
            staging = config.getboolean('release-runner', 'staging')
            update(configs_workdir, revision='default')
            cfgFile = path.join(configs_workdir,
                                'mozilla',
                                getReleaseConfigName(release['product'],
                                                     path.basename(release['branch']),
                                                     release['version'], staging))
            enUSPlatforms = readReleaseConfig(cfgFile)['enUSPlatforms']
            rr.start_release_automation(release, sendchange_master, enUSPlatforms)
        except:
            # We explicitly do not raise an error here because there's no
            # reason not to start other releases if the sendchange fails for
            # another one. We _do_ need to set this in order to exit
            # with the right code, though.
            rc = 2
            rr.update_status(release, 'Sendchange failed')
            log.error('Sendchange failed for %s: ' % release, exc_info=True)

    if rc != 0:
        sys.exit(rc)
Beispiel #15
0
 def testFennec(self):
     got = getReleaseConfigName('fennec', 'mozilla-beta')
     self.assertEquals('release-fennec-mozilla-beta.py', got)
 def testThunderbirdCommReleaseSpecialCase(self):
     got = getReleaseConfigName('thunderbird', 'comm-esr17', version='17.0.3')
     self.assertEquals('release-thunderbird-comm-release.py', got)
Beispiel #17
0
 def testFirefox(self):
     got = getReleaseConfigName('firefox', 'mozilla-release')
     self.assertEquals('release-firefox-mozilla-release.py', got)
Beispiel #18
0
    # Clean up after any potential previous attempts before starting.
    # Not doing this could end up with multiple heads on the same branch.
    for repo, workdir, push_repo in (
        (buildbot_configs, configs_workdir, configs_pushRepo),
        (buildbotcustom, custom_workdir, custom_pushRepo),
        (tools, tools_workdir, tools_pushRepo)
    ):

        retry(mercurial, args=(repo, workdir))
        cleanOutgoingRevs(workdir, push_repo, hg_username,
                          hg_ssh_key)

    # Send email to r-d for a fast notification
    for release in rr.new_releases:
        cfgFile = configs_workdir + "/mozilla/" + getReleaseConfigName(
            release['product'], path.basename(release['branch']),
            release['version'], staging)
        sendMailRD(smtp_server, notify_from, cfgFile, release)

    # Create symlinks if needed
    if 'symlinks' in config.sections():
        format_dict = dict(buildbot_configs=configs_workdir,
                           buildbotcustom=custom_workdir, tools=tools_workdir)
        for target in config.options('symlinks'):
            symlink = config.get('symlinks', target).format(**format_dict)
            if path.exists(symlink):
                log.warning("Skipping %s -> %s symlink" % (symlink, target))
            else:
                log.info("Adding %s -> %s symlink" % (symlink, target))
                os.symlink(target, symlink)
Beispiel #19
0
 def testStaging(self):
     got = getReleaseConfigName('fennec', 'mozilla-release', staging=True)
     self.assertEquals('staging_release-fennec-mozilla-release.py', got)
Beispiel #20
0
    # Clean up after any potential previous attempts before starting.
    # Not doing this could end up with multiple heads on the same branch.
    for repo, workdir, push_repo in ((buildbot_configs, configs_workdir,
                                      configs_pushRepo),
                                     (buildbotcustom, custom_workdir,
                                      custom_pushRepo), (tools, tools_workdir,
                                                         tools_pushRepo)):

        retry(mercurial, args=(repo, workdir))
        cleanOutgoingRevs(workdir, push_repo, hg_username, hg_ssh_key)

    # Send email to r-d for a fast notification
    for release in rr.new_releases:
        cfgFile = configs_workdir + "/mozilla/" + getReleaseConfigName(
            release['product'], path.basename(release['branch']),
            release['version'], staging)
        sendMailRD(smtp_server, notify_from, cfgFile, release)

    # Create symlinks if needed
    if 'symlinks' in config.sections():
        format_dict = dict(buildbot_configs=configs_workdir,
                           buildbotcustom=custom_workdir,
                           tools=tools_workdir)
        for target in config.options('symlinks'):
            symlink = config.get('symlinks', target).format(**format_dict)
            if path.exists(symlink):
                log.warning("Skipping %s -> %s symlink" % (symlink, target))
            else:
                log.info("Adding %s -> %s symlink" % (symlink, target))
                os.symlink(target, symlink)