[IMP] runbot: add env parameter support for docker in config steps

This commit is contained in:
Xavier-Do 2019-11-07 13:51:44 +01:00 committed by XavierDo
parent 7598d45283
commit 685cc282ba
3 changed files with 12 additions and 4 deletions

View File

@ -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

View File

@ -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':

View File

@ -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}" />