diff --git a/runbot/container.py b/runbot/container.py
index fdb06b0b..22ea097a 100644
--- a/runbot/container.py
+++ b/runbot/container.py
@@ -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
diff --git a/runbot/models/build_config.py b/runbot/models/build_config.py
index 25ac207d..49de202d 100644
--- a/runbot/models/build_config.py
+++ b/runbot/models/build_config.py
@@ -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':
diff --git a/runbot/views/config_views.xml b/runbot/views/config_views.xml
index 2a8adc17..212a2958 100644
--- a/runbot/views/config_views.xml
+++ b/runbot/views/config_views.xml
@@ -60,7 +60,9 @@
+
+