buildinstall: Add option to disable it
Fixes: https://pagure.io/pungi/issue/854 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
340ae4d286
commit
95bb147015
@ -504,6 +504,11 @@ Options
|
|||||||
task using HTTP and set the output directory for this task to
|
task using HTTP and set the output directory for this task to
|
||||||
``buildinstall_topdir``. Once the runroot task finishes, Pungi will copy
|
``buildinstall_topdir``. Once the runroot task finishes, Pungi will copy
|
||||||
the results of runroot tasks to the compose working directory.
|
the results of runroot tasks to the compose working directory.
|
||||||
|
**buildinstall_skip**
|
||||||
|
(*list*) -- mapping that defines which variants and arches to skip during
|
||||||
|
buildinstall; format: ``[(variant_uid_regex, {arch|*: True})]``. This is
|
||||||
|
only supported for lorax.
|
||||||
|
|
||||||
|
|
||||||
Example
|
Example
|
||||||
-------
|
-------
|
||||||
@ -525,6 +530,13 @@ Example
|
|||||||
})
|
})
|
||||||
]
|
]
|
||||||
|
|
||||||
|
# Don't run buildinstall phase for Modular variant
|
||||||
|
buildinstall_skip = [
|
||||||
|
('^Modular', {
|
||||||
|
'*': True
|
||||||
|
})
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
|
|
||||||
|
@ -727,6 +727,7 @@ def make_schema():
|
|||||||
"buildinstall_topdir": {"type": "string"},
|
"buildinstall_topdir": {"type": "string"},
|
||||||
"buildinstall_kickstart": {"$ref": "#/definitions/str_or_scm_dict"},
|
"buildinstall_kickstart": {"$ref": "#/definitions/str_or_scm_dict"},
|
||||||
"buildinstall_use_guestmount": {"type": "boolean", "default": True},
|
"buildinstall_use_guestmount": {"type": "boolean", "default": True},
|
||||||
|
"buildinstall_skip": _variant_arch_mapping({"type": "boolean"}),
|
||||||
|
|
||||||
"global_ksurl": {"type": "string"},
|
"global_ksurl": {"type": "string"},
|
||||||
"global_version": {"type": "string"},
|
"global_version": {"type": "string"},
|
||||||
|
@ -134,10 +134,18 @@ class BuildinstallPhase(PhaseBase):
|
|||||||
repo_baseurl = translate_path(self.compose, repo_baseurl)
|
repo_baseurl = translate_path(self.compose, repo_baseurl)
|
||||||
|
|
||||||
if self.buildinstall_method == "lorax":
|
if self.buildinstall_method == "lorax":
|
||||||
|
|
||||||
buildarch = get_valid_arches(arch)[0]
|
buildarch = get_valid_arches(arch)[0]
|
||||||
for variant in self.compose.get_variants(arch=arch, types=['variant']):
|
for variant in self.compose.get_variants(arch=arch, types=['variant']):
|
||||||
if variant.is_empty:
|
if variant.is_empty:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
skip = get_arch_variant_data(self.compose.conf, "buildinstall_skip", arch, variant)
|
||||||
|
if skip == [True]:
|
||||||
|
self.compose.log_info(
|
||||||
|
'Skipping buildinstall for %s.%s due to config option' % (variant, arch))
|
||||||
|
continue
|
||||||
|
|
||||||
volid = get_volid(self.compose, arch, variant=variant, disc_type=disc_type)
|
volid = get_volid(self.compose, arch, variant=variant, disc_type=disc_type)
|
||||||
commands.append(
|
commands.append(
|
||||||
(variant,
|
(variant,
|
||||||
|
@ -43,6 +43,33 @@ class TestBuildinstallPhase(PungiTestCase):
|
|||||||
|
|
||||||
self.assertTrue(phase.skip())
|
self.assertTrue(phase.skip())
|
||||||
|
|
||||||
|
@mock.patch('pungi.phases.buildinstall.ThreadPool')
|
||||||
|
@mock.patch('pungi.phases.buildinstall.LoraxWrapper')
|
||||||
|
@mock.patch('pungi.phases.buildinstall.get_volid')
|
||||||
|
def test_skip_option(self, get_volid, loraxCls, poolCls):
|
||||||
|
compose = BuildInstallCompose(self.topdir, {
|
||||||
|
'bootable': True,
|
||||||
|
'buildinstall_method': 'lorax',
|
||||||
|
'buildinstall_skip': [
|
||||||
|
('^Server$', {
|
||||||
|
'amd64': True
|
||||||
|
}),
|
||||||
|
('^Client$', {
|
||||||
|
'*': True,
|
||||||
|
}),
|
||||||
|
]
|
||||||
|
})
|
||||||
|
|
||||||
|
get_volid.return_value = 'vol_id'
|
||||||
|
loraxCls.return_value.get_lorax_cmd.return_value = ['lorax', '...']
|
||||||
|
|
||||||
|
phase = BuildinstallPhase(compose)
|
||||||
|
|
||||||
|
phase.run()
|
||||||
|
|
||||||
|
pool = poolCls.return_value
|
||||||
|
self.assertEqual(1, len(pool.queue_put.mock_calls))
|
||||||
|
|
||||||
def test_does_not_skip_on_bootable(self):
|
def test_does_not_skip_on_bootable(self):
|
||||||
compose = BuildInstallCompose(self.topdir, {'bootable': True})
|
compose = BuildInstallCompose(self.topdir, {'bootable': True})
|
||||||
compose.just_phases = None
|
compose.just_phases = None
|
||||||
|
Loading…
Reference in New Issue
Block a user