mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 23:45:44 +07:00
[IMP] runbot: add env parameter support for docker in config steps
This commit is contained in:
parent
7598d45283
commit
685cc282ba
@ -74,7 +74,7 @@ def docker_build(log_path, build_dir):
|
||||
dbuild.wait()
|
||||
|
||||
|
||||
def docker_run(run_cmd, log_path, build_dir, container_name, exposed_ports=None, cpu_limit=None, preexec_fn=None, ro_volumes=None):
|
||||
def docker_run(run_cmd, log_path, build_dir, container_name, exposed_ports=None, cpu_limit=None, preexec_fn=None, ro_volumes=None, env_variables=None):
|
||||
"""Run tests in a docker container
|
||||
:param run_cmd: command string to run in container
|
||||
:param log_path: path to the logfile that will contain odoo stdout and stderr
|
||||
@ -102,6 +102,10 @@ def docker_run(run_cmd, log_path, build_dir, container_name, exposed_ports=None,
|
||||
logs.write("Adding readonly volume '%s' pointing to %s \n" % (dest, source))
|
||||
docker_command.append('--volume=%s:/data/build/%s:ro' % (source, dest))
|
||||
|
||||
if env_variables:
|
||||
for var in env_variables:
|
||||
docker_command.append('-e=%s' % var)
|
||||
|
||||
serverrc_path = os.path.expanduser('~/.openerp_serverrc')
|
||||
odoorc_path = os.path.expanduser('~/.odoorc')
|
||||
final_rc = odoorc_path if os.path.exists(odoorc_path) else serverrc_path if os.path.exists(serverrc_path) else None
|
||||
|
@ -108,9 +108,10 @@ class ConfigStep(models.Model):
|
||||
coverage = fields.Boolean('Coverage', default=False, track_visibility='onchange')
|
||||
flamegraph = fields.Boolean('Allow Flamegraph', default=False, track_visibility='onchange')
|
||||
test_enable = fields.Boolean('Test enable', default=True, track_visibility='onchange')
|
||||
test_tags = fields.Char('Test tags', help="comma separated list of test tags")
|
||||
enable_auto_tags = fields.Boolean('Allow auto tag', default=True)
|
||||
test_tags = fields.Char('Test tags', help="comma separated list of test tags", track_visibility='onchange')
|
||||
enable_auto_tags = fields.Boolean('Allow auto tag', default=True, track_visibility='onchange')
|
||||
extra_params = fields.Char('Extra cmd args', track_visibility='onchange')
|
||||
additionnal_env = fields.Char('Extra env', help='Example: foo="bar",bar="foo". Cannot contains \' ', track_visibility='onchange')
|
||||
# python
|
||||
python_code = fields.Text('Python code', track_visibility='onchange', default=PYTHON_DEFAULT)
|
||||
running_job = fields.Boolean('Job final state is running', default=False, help="Docker won't be killed if checked")
|
||||
@ -362,7 +363,8 @@ class ConfigStep(models.Model):
|
||||
cmd.finals.append(['gzip', '-f', self._perfs_data_path()]) # keep data but gz them to save disc space
|
||||
max_timeout = int(self.env['ir.config_parameter'].get_param('runbot.runbot_timeout', default=10000))
|
||||
timeout = min(self.cpu_limit, max_timeout)
|
||||
return docker_run(cmd.build(), log_path, build._path(), build._get_docker_name(), cpu_limit=timeout, ro_volumes=exports)
|
||||
env_variables = self.additionnal_env.replace("'", '"').split(',') # remove '
|
||||
return docker_run(cmd.build(), log_path, build._path(), build._get_docker_name(), cpu_limit=timeout, ro_volumes=exports, env_variables=env_variables)
|
||||
|
||||
def log_end(self, build):
|
||||
if self.job_type == 'create_build':
|
||||
|
@ -60,7 +60,9 @@
|
||||
<field name="coverage"/>
|
||||
<field name="test_enable"/>
|
||||
<field name="test_tags"/>
|
||||
<field name="enable_auto_tags"/>
|
||||
<field name="extra_params"/>
|
||||
<field name="additionnal_env"/>
|
||||
</group>
|
||||
<group string="Create settings" attrs="{'invisible': [('job_type', 'not in', ('python', 'create_build'))]}">
|
||||
<field name="create_config_ids" widget="many2many_tags" options="{'no_create': True}" />
|
||||
|
Loading…
Reference in New Issue
Block a user