mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 23:45:44 +07:00
[IMP] runbot: don't use local odoorc
This commit is contained in:
parent
bfc75cd7fe
commit
785e2dc3bc
@ -172,18 +172,9 @@ def _docker_run(cmd=False, log_path=False, build_dir=False, container_name=False
|
||||
if ro_volumes:
|
||||
for dest, source in ro_volumes.items():
|
||||
logs.write("Adding readonly volume '%s' pointing to %s \n" % (dest, source))
|
||||
volumes[source] = {'bind': f'/data/build/{dest}', 'mode': 'ro'}
|
||||
volumes[source] = {'bind': dest, 'mode': 'ro'}
|
||||
logs.close()
|
||||
|
||||
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
|
||||
rc_content = cmd_object.get_config(starting_config=open(final_rc, 'r').read() if final_rc else '')
|
||||
rc_path = os.path.join(build_dir, '.odoorc')
|
||||
with open(rc_path, 'w') as rc_file:
|
||||
rc_file.write(rc_content)
|
||||
volumes[rc_path] = {'bind': '/home/odoo/.odoorc', 'mode': 'ro'}
|
||||
|
||||
ports = {}
|
||||
if exposed_ports:
|
||||
for dp, hp in enumerate(exposed_ports, start=8069):
|
||||
|
@ -35,6 +35,11 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.config_parameter" id="runbot.runbot_default_odoorc">
|
||||
<field name="key">runbot.runbot_default_odoorc</field>
|
||||
<field name="value">[options]\nadmin_passwd=running_master_password</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
|
||||
<record model="ir.config_parameter" id="runbot.runbot_is_base_regex">
|
||||
|
@ -744,8 +744,12 @@ class BuildResult(models.Model):
|
||||
build._log("run", message, level='ERROR')
|
||||
build._kill(result='ko')
|
||||
|
||||
def _docker_run(self, **kwargs):
|
||||
def _docker_run(self, cmd=None, ro_volumes=None, **kwargs):
|
||||
self.ensure_one()
|
||||
_ro_volumes = ro_volumes or {}
|
||||
ro_volumes = {}
|
||||
for dest, source in _ro_volumes.items():
|
||||
ro_volumes[f'/data/build/{dest}'] = source
|
||||
if 'image_tag' not in kwargs:
|
||||
kwargs.update({'image_tag': self.params_id.dockerfile_id.image_tag})
|
||||
if kwargs['image_tag'] != 'odoo:DockerDefault':
|
||||
@ -758,7 +762,16 @@ class BuildResult(models.Model):
|
||||
start_step_time = int(dt2time(self.docker_start) - dt2time(self.job_start))
|
||||
if start_step_time > 60:
|
||||
_logger.info('Step took %s seconds before starting docker', start_step_time)
|
||||
docker_run(**kwargs)
|
||||
|
||||
starting_config = self.env['ir.config_parameter'].sudo().get_param('runbot.runbot_default_odoorc')
|
||||
if isinstance(cmd, Command):
|
||||
rc_content = cmd.get_config(starting_config=starting_config)
|
||||
else:
|
||||
rc_content = starting_config
|
||||
self.write_file('.odoorc', rc_content)
|
||||
ro_volumes['/home/odoo/.odoorc'] = self._path('.odoorc')
|
||||
kwargs.pop('build_dir', False) # todo check python steps
|
||||
docker_run(cmd=cmd, build_dir=self._path(), ro_volumes=ro_volumes, **kwargs)
|
||||
|
||||
def _path(self, *l, **kw):
|
||||
"""Return the repo build path"""
|
||||
|
@ -386,12 +386,11 @@ class ConfigStep(models.Model):
|
||||
env_variables = self.additionnal_env.split(';') if self.additionnal_env else []
|
||||
|
||||
docker_name = build._get_docker_name()
|
||||
build_path = build._path()
|
||||
build_port = build.port
|
||||
self.env.cr.commit() # commit before docker run to be 100% sure that db state is consistent with dockers
|
||||
self.invalidate_cache()
|
||||
self.env['runbot.runbot']._reload_nginx()
|
||||
return dict(cmd=cmd, log_path=log_path, build_dir=build_path, container_name=docker_name, exposed_ports=[build_port, build_port + 1], ro_volumes=exports, env_variables=env_variables)
|
||||
return dict(cmd=cmd, log_path=log_path, container_name=docker_name, exposed_ports=[build_port, build_port + 1], ro_volumes=exports, env_variables=env_variables)
|
||||
|
||||
|
||||
def _run_install_odoo(self, build, log_path):
|
||||
@ -476,7 +475,7 @@ class ConfigStep(models.Model):
|
||||
max_timeout = int(self.env['ir.config_parameter'].get_param('runbot.runbot_timeout', default=10000))
|
||||
timeout = min(self.cpu_limit, max_timeout)
|
||||
env_variables = self.additionnal_env.split(';') if self.additionnal_env else []
|
||||
return dict(cmd=cmd, log_path=log_path, build_dir=build._path(), container_name=build._get_docker_name(), cpu_limit=timeout, ro_volumes=exports, env_variables=env_variables)
|
||||
return dict(cmd=cmd, log_path=log_path, container_name=build._get_docker_name(), cpu_limit=timeout, ro_volumes=exports, env_variables=env_variables)
|
||||
|
||||
def _upgrade_create_childs(self):
|
||||
pass
|
||||
@ -713,7 +712,7 @@ class ConfigStep(models.Model):
|
||||
exception_env = self.env['runbot.upgrade.exception']._generate()
|
||||
if exception_env:
|
||||
env_variables.append(exception_env)
|
||||
return dict(cmd=migrate_cmd, log_path=log_path, build_dir=build._path(), container_name=build._get_docker_name(), cpu_limit=timeout, ro_volumes=exports, env_variables=env_variables, image_tag=target.params_id.dockerfile_id.image_tag)
|
||||
return dict(cmd=migrate_cmd, log_path=log_path, container_name=build._get_docker_name(), cpu_limit=timeout, ro_volumes=exports, env_variables=env_variables, image_tag=target.params_id.dockerfile_id.image_tag)
|
||||
|
||||
def _run_restore(self, build, log_path):
|
||||
# exports = build._checkout()
|
||||
@ -756,7 +755,7 @@ class ConfigStep(models.Model):
|
||||
|
||||
])
|
||||
|
||||
return dict(cmd=cmd, log_path=log_path, build_dir=build._path(), container_name=build._get_docker_name(), cpu_limit=self.cpu_limit)
|
||||
return dict(cmd=cmd, log_path=log_path, container_name=build._get_docker_name(), cpu_limit=self.cpu_limit)
|
||||
|
||||
def _reference_builds(self, bundle, trigger):
|
||||
upgrade_dumps_trigger_id = trigger.upgrade_dumps_trigger_id
|
||||
|
@ -20,6 +20,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
runbot_update_frequency = fields.Integer('Update frequency (in seconds)')
|
||||
runbot_template = fields.Char('Postgresql template', help="Postgresql template to use when creating DB's")
|
||||
runbot_message = fields.Text('Frontend warning message')
|
||||
runbot_default_odoorc = fields.Text('Default odoorc for builds')
|
||||
runbot_upgrade_exception_message = fields.Text('Upgrade exception message')
|
||||
runbot_do_fetch = fields.Boolean('Discover new commits')
|
||||
runbot_do_schedule = fields.Boolean('Schedule builds')
|
||||
@ -52,6 +53,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
runbot_update_frequency=int(get_param('runbot.runbot_update_frequency', default=10)),
|
||||
runbot_template=get_param('runbot.runbot_db_template'),
|
||||
runbot_message=get_param('runbot.runbot_message', default=''),
|
||||
runbot_default_odoorc=get_param('runbot.runbot_default_odoorc'),
|
||||
runbot_upgrade_exception_message=get_param('runbot.runbot_upgrade_exception_message'),
|
||||
runbot_do_fetch=get_param('runbot.runbot_do_fetch', default=False),
|
||||
runbot_do_schedule=get_param('runbot.runbot_do_schedule', default=False),
|
||||
@ -72,6 +74,7 @@ class ResConfigSettings(models.TransientModel):
|
||||
set_param('runbot.runbot_update_frequency', self.runbot_update_frequency)
|
||||
set_param('runbot.runbot_db_template', self.runbot_template)
|
||||
set_param('runbot.runbot_message', self.runbot_message)
|
||||
set_param('runbot.runbot_default_odoorc', self.runbot_default_odoorc)
|
||||
set_param('runbot.runbot_upgrade_exception_message', self.runbot_upgrade_exception_message)
|
||||
set_param('runbot.runbot_do_fetch', self.runbot_do_fetch)
|
||||
set_param('runbot.runbot_do_schedule', self.runbot_do_schedule)
|
||||
|
@ -438,11 +438,12 @@ class TestUpgradeFlow(RunbotCase):
|
||||
self.patchers['docker_run'].assert_called()
|
||||
|
||||
def docker_run_upgrade(cmd, *args, ro_volumes=False, **kwargs):
|
||||
self.assertTrue(ro_volumes.pop('/home/odoo/.odoorc').startswith('/tmp/runbot_test/static/build/'))
|
||||
self.assertEqual(
|
||||
ro_volumes, {
|
||||
'addons': '/tmp/runbot_test/static/sources/addons/addons120',
|
||||
'server': '/tmp/runbot_test/static/sources/server/server120',
|
||||
'upgrade': '/tmp/runbot_test/static/sources/upgrade/123abc789'
|
||||
'/data/build/addons': '/tmp/runbot_test/static/sources/addons/addons120',
|
||||
'/data/build/server': '/tmp/runbot_test/static/sources/server/server120',
|
||||
'/data/build/upgrade': '/tmp/runbot_test/static/sources/upgrade/123abc789',
|
||||
},
|
||||
"other commit should have been added automaticaly"
|
||||
)
|
||||
|
@ -68,6 +68,8 @@
|
||||
</div>
|
||||
<label for="runbot_logdb_uri" class="col-xs-3 o_light_label" style="width: 60%;"/>
|
||||
<field name="runbot_logdb_uri" style="width: 100%;"/>
|
||||
<label for="runbot_default_odoorc" class="col-xs-3 o_light_label" style="width: 60%;"/>
|
||||
<field name="runbot_default_odoorc" style="width: 100%;"/>
|
||||
<label for="runbot_message" class="col-xs-3 o_light_label" style="width: 60%;"/>
|
||||
<field name="runbot_message" style="width: 100%;"/>
|
||||
<label for="runbot_upgrade_exception_message" class="col-xs-3 o_light_label" style="width: 60%;"/>
|
||||
|
Loading…
Reference in New Issue
Block a user