Enable tito release --test for git releasers

* Store the --test flag on the releaser and pass it to the builder
* With --test in effect, have the builder update the spec file
* When the builder does so it also updates the build_version to include git hash
This commit is contained in:
Luke Meyer 2013-04-19 16:31:03 -04:00
parent 60d3f577c0
commit df27d8bb11
3 changed files with 19 additions and 13 deletions

View file

@ -404,6 +404,7 @@ class Builder(ConfigObject):
self.tgz_filename, self.tgz_filename,
) )
run_command(cmd) run_command(cmd)
self.build_version += ".git." + str(self.commit_count) + "." + str(self.git_commit_id[:7])
self.ran_setup_test_specfile = True self.ran_setup_test_specfile = True
def _get_rpmbuild_dir_options(self): def _get_rpmbuild_dir_options(self):

View file

@ -622,7 +622,8 @@ class ReleaseModule(BaseCliModule):
user_config=self.user_config, user_config=self.user_config,
target=target, target=target,
releaser_config=releaser_config, releaser_config=releaser_config,
no_cleanup=self.options.no_cleanup) no_cleanup=self.options.no_cleanup,
test=self.options.test)
releaser.release(dry_run=self.options.dry_run, releaser.release(dry_run=self.options.dry_run,
no_build=self.options.no_build, no_build=self.options.no_build,
scratch=self.options.scratch) scratch=self.options.scratch)

View file

@ -50,9 +50,11 @@ class Releaser(object):
def __init__(self, name=None, version=None, tag=None, build_dir=None, def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None, pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False): target=None, releaser_config=None, no_cleanup=False, test=False):
self.builder_args = self._parse_builder_args(releaser_config, target) self.builder_args = self._parse_builder_args(releaser_config, target)
if test:
self.builder_args['test'] = True # builder must know to build from HEAD
# While we create a builder here, we don't actually call run on it # While we create a builder here, we don't actually call run on it
# unless the releaser needs to: # unless the releaser needs to:
@ -80,7 +82,7 @@ class Releaser(object):
self.target = target self.target = target
self.dry_run = False self.dry_run = False
self.test = test # releaser must know to use builder designation rather than tag
self.no_cleanup = no_cleanup self.no_cleanup = no_cleanup
self._check_releaser_config() self._check_releaser_config()
@ -261,10 +263,10 @@ class RsyncReleaser(Releaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None, def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None, pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, target=None, releaser_config=None, no_cleanup=False, test=False,
prefix="temp_dir="): prefix="temp_dir="):
Releaser.__init__(self, name, version, tag, build_dir, pkg_config, Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup) global_config, user_config, target, releaser_config, no_cleanup, test)
self.build_dir = build_dir self.build_dir = build_dir
self.prefix = prefix self.prefix = prefix
@ -374,9 +376,9 @@ class YumRepoReleaser(RsyncReleaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None, def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None, pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False): target=None, releaser_config=None, no_cleanup=False, test=False):
RsyncReleaser.__init__(self, name, version, tag, build_dir, pkg_config, RsyncReleaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup, global_config, user_config, target, releaser_config, no_cleanup, test,
prefix="yumrepo-") prefix="yumrepo-")
def _read_rpm_header(self, ts, new_rpm_path): def _read_rpm_header(self, ts, new_rpm_path):
@ -442,9 +444,9 @@ class FedoraGitReleaser(Releaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None, def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None, pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False): target=None, releaser_config=None, no_cleanup=False, test=False):
Releaser.__init__(self, name, version, tag, build_dir, pkg_config, Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup) global_config, user_config, target, releaser_config, no_cleanup, test)
self.git_branches = \ self.git_branches = \
self.releaser_config.get(self.target, "branches").split(" ") self.releaser_config.get(self.target, "branches").split(" ")
@ -477,6 +479,8 @@ class FedoraGitReleaser(Releaser):
run_command("%s switch-branch %s" % (self.cli_tool, self.git_branches[0])) run_command("%s switch-branch %s" % (self.cli_tool, self.git_branches[0]))
self.builder.tgz() self.builder.tgz()
if self.test:
self.builder._setup_test_specfile()
self._git_sync_files(project_checkout) self._git_sync_files(project_checkout)
self._git_upload_sources(project_checkout) self._git_upload_sources(project_checkout)
@ -708,9 +712,9 @@ class CvsReleaser(Releaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None, def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None, pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False): target=None, releaser_config=None, no_cleanup=False, test=False):
Releaser.__init__(self, name, version, tag, build_dir, pkg_config, Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup) global_config, user_config, target, releaser_config, no_cleanup, test)
self.package_workdir = os.path.join(self.working_dir, self.package_workdir = os.path.join(self.working_dir,
self.project_name) self.project_name)
@ -954,9 +958,9 @@ class KojiReleaser(Releaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None, def __init__(self, name=None, version=None, tag=None, build_dir=None,
pkg_config=None, global_config=None, user_config=None, pkg_config=None, global_config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False): target=None, releaser_config=None, no_cleanup=False, test=False):
Releaser.__init__(self, name, version, tag, build_dir, pkg_config, Releaser.__init__(self, name, version, tag, build_dir, pkg_config,
global_config, user_config, target, releaser_config, no_cleanup) global_config, user_config, target, releaser_config, no_cleanup, test)
self.only_tags = [] self.only_tags = []
if 'ONLY_TAGS' in os.environ: if 'ONLY_TAGS' in os.environ: