Add support for passing builder args through a releaser.

This commit is contained in:
Devan Goodwin 2014-02-26 14:52:56 -04:00
parent 1535850328
commit a6d71534bb
5 changed files with 49 additions and 21 deletions

View file

@ -609,6 +609,16 @@ class ReleaseModule(BaseCliModule):
error_out("No such releaser configured: %s" % target)
releaser_class = get_class_by_name(releaser_config.get(target, "releaser"))
debug("Using releaser class: %s" % releaser_class)
builder_args = {}
if len(self.options.builder_args) > 0:
for arg in self.options.builder_args:
key, val = arg.split('=')
debug("Passing builder arg: %s = %s" % (key, val))
# TODO: support list values
builder_args[key] = val
kwargs = {
'builder_args': builder_args
}
releaser = releaser_class(
name=package_name,
@ -620,7 +630,8 @@ class ReleaseModule(BaseCliModule):
releaser_config=releaser_config,
no_cleanup=self.options.no_cleanup,
test=self.options.test,
auto_accept=self.options.auto_accept)
auto_accept=self.options.auto_accept,
**kwargs)
releaser.release(dry_run=self.options.dry_run,
no_build=self.options.no_build,

View file

@ -27,9 +27,11 @@ class CoprReleaser(KojiReleaser):
def __init__(self, name=None, version=None, tag=None, build_dir=None,
config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, test=False, auto_accept=False):
target=None, releaser_config=None, no_cleanup=False,
test=False, auto_accept=False, **kwargs):
KojiReleaser.__init__(self, name, version, tag, build_dir, config,
user_config, target, releaser_config, no_cleanup, test, auto_accept)
user_config, target, releaser_config, no_cleanup, test,
auto_accept, **kwargs)
self.copr_project_name = \
self.releaser_config.get(self.target, "project_name")

View file

@ -29,7 +29,8 @@ class ObsReleaser(Releaser):
def __init__(self, name=None, tag=None, build_dir=None,
config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, test=False, auto_accept=False):
target=None, releaser_config=None, no_cleanup=False,
test=False, auto_accept=False, **kwargs):
Releaser.__init__(self, name, tag, build_dir,
user_config, target, releaser_config, no_cleanup, test, auto_accept)

View file

@ -61,12 +61,18 @@ class Releaser(ConfigObject):
def __init__(self, name=None, tag=None, build_dir=None,
config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, test=False, auto_accept=False):
target=None, releaser_config=None, no_cleanup=False,
test=False, auto_accept=False, **kwargs):
ConfigObject.__init__(self, config=config)
self.builder_args = self._parse_builder_args(releaser_config, target)
config_builder_args = self._parse_builder_args(releaser_config, target)
if test:
self.builder_args['test'] = True # builder must know to build from HEAD
config_builder_args['test'] = True # builder must know to build from HEAD
# Override with builder args from command line if any were given:
self.builder_args = dict(config_builder_args.items() +
kwargs['builder_args'].items())
# While we create a builder here, we don't actually call run on it
# unless the releaser needs to:
@ -286,10 +292,12 @@ class RsyncReleaser(Releaser):
def __init__(self, name=None, tag=None, build_dir=None,
config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, test=False, auto_accept=False,
prefix="temp_dir="):
target=None, releaser_config=None, no_cleanup=False,
test=False, auto_accept=False,
prefix="temp_dir=", **kwargs):
Releaser.__init__(self, name, tag, build_dir, config,
user_config, target, releaser_config, no_cleanup, test, auto_accept)
user_config, target, releaser_config, no_cleanup, test,
auto_accept, **kwargs)
self.build_dir = build_dir
self.prefix = prefix
@ -404,10 +412,11 @@ class YumRepoReleaser(RsyncReleaser):
def __init__(self, name=None, tag=None, build_dir=None,
config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, test=False, auto_accept=False):
target=None, releaser_config=None, no_cleanup=False,
test=False, auto_accept=False, **kwargs):
RsyncReleaser.__init__(self, name, tag, build_dir, config,
user_config, target, releaser_config, no_cleanup, test, auto_accept,
prefix="yumrepo-")
prefix="yumrepo-", **kwargs)
def _read_rpm_header(self, ts, new_rpm_path):
"""
@ -472,9 +481,11 @@ class FedoraGitReleaser(Releaser):
def __init__(self, name=None, tag=None, build_dir=None,
config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, test=False, auto_accept=False):
target=None, releaser_config=None, no_cleanup=False,
test=False, auto_accept=False, **kwargs):
Releaser.__init__(self, name, tag, build_dir, config,
user_config, target, releaser_config, no_cleanup, test, auto_accept)
user_config, target, releaser_config, no_cleanup, test,
auto_accept, **kwargs)
self.git_branches = \
self.releaser_config.get(self.target, "branches").split(" ")
@ -749,9 +760,11 @@ class CvsReleaser(Releaser):
def __init__(self, name=None, tag=None, build_dir=None,
config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, test=False, auto_accept=False):
target=None, releaser_config=None, no_cleanup=False,
test=False, auto_accept=False, **kwargs):
Releaser.__init__(self, name, tag, build_dir, config,
user_config, target, releaser_config, no_cleanup, test, auto_accept)
user_config, target, releaser_config, no_cleanup, test,
auto_accept, **kwargs)
self.package_workdir = os.path.join(self.working_dir,
self.project_name)
@ -994,7 +1007,8 @@ class KojiReleaser(Releaser):
def __init__(self, name=None, tag=None, build_dir=None,
config=None, user_config=None,
target=None, releaser_config=None, no_cleanup=False, test=False, auto_accept=False):
target=None, releaser_config=None, no_cleanup=False,
test=False, auto_accept=False, **kwargs):
Releaser.__init__(self, name, tag, build_dir, config,
user_config, target, releaser_config, no_cleanup, test, auto_accept)

View file

@ -65,6 +65,10 @@ class FetchBuilderTests(TitoGitTestFixture):
TitoGitTestFixture.tearDown(self)
shutil.rmtree(self.output_dir)
def _setup_fetchbuilder_releaser(self):
self.write_file(join(self.repo_dir, 'rel-eng/releasers.conf'),
RELEASER_CONF)
def test_simple_build_no_tag(self):
# We have not tagged here. Build --rpm should just work:
self.assertFalse(os.path.exists(
@ -82,10 +86,6 @@ class FetchBuilderTests(TitoGitTestFixture):
'build --tag=extsrc-0.0.1-1 --rpm --output=%s --arg=source=%s ' %
(self.output_dir, self.source_filename))
def _setup_fetchbuilder_releaser(self):
self.write_file(join(self.repo_dir, 'rel-eng/releasers.conf'),
RELEASER_CONF)
def test_with_releaser(self):
self._setup_fetchbuilder_releaser()
tito('release --debug yum-test --arg source=%s' %