mirror of
https://github.com/rpm-software-management/tito.git
synced 2025-02-23 12:12:47 +00:00
Add support for passing builder args through a releaser.
This commit is contained in:
parent
1535850328
commit
a6d71534bb
5 changed files with 49 additions and 21 deletions
|
@ -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,
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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' %
|
||||
|
|
Loading…
Add table
Reference in a new issue