mirror of
https://github.com/odoo/runbot.git
synced 2025-03-15 15:35:46 +07:00

The docker operation are called often and cannot be logged each time. If a docker operation is slow, we log it at the end but waiting for this output we have no idea what the process is doing. This pr proposed to go a lower level and get the stream from the docker operation to be able to log earlier if we started a potentially slow operation.
54 lines
2.0 KiB
Python
Executable File
54 lines
2.0 KiB
Python
Executable File
#!/usr/bin/python3
|
|
import logging
|
|
import threading
|
|
|
|
from pathlib import Path
|
|
|
|
from tools import RunbotClient, run, docker_monitoring_loop
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class BuilderClient(RunbotClient):
|
|
|
|
def on_start(self):
|
|
builds_path = self.env['runbot.runbot']._path('build')
|
|
monitoring_thread = threading.Thread(target=docker_monitoring_loop, args=(builds_path,), daemon=True)
|
|
monitoring_thread.start()
|
|
|
|
if self.env['ir.config_parameter'].sudo().get_param('runbot.runbot_do_fetch'):
|
|
for repo in self.env['runbot.repo'].search([('mode', '!=', 'disabled')]):
|
|
repo._update(force=True)
|
|
|
|
self.last_docker_updates = None
|
|
|
|
def loop_turn(self):
|
|
icp = self.env['ir.config_parameter']
|
|
docker_registry_host_id = icp.get_param('runbot.docker_registry_host_id', default=False)
|
|
is_registry = docker_registry_host_id == str(self.host.id)
|
|
if is_registry:
|
|
self.env['runbot.runbot']._start_docker_registry()
|
|
last_docker_updates = self.env['runbot.dockerfile'].search([('to_build', '=', True)]).mapped('write_date')
|
|
if self.count == 1 or self.last_docker_updates != last_docker_updates:
|
|
self.last_docker_updates = last_docker_updates
|
|
self.host._docker_update_images()
|
|
self.env.cr.commit()
|
|
if self.count == 1: # cleanup at second iteration
|
|
self.env['runbot.runbot']._source_cleanup()
|
|
self.env.cr.commit()
|
|
self.env['runbot.build']._local_cleanup()
|
|
self.env.cr.commit()
|
|
self.env['runbot.runbot']._docker_cleanup()
|
|
self.env.cr.commit()
|
|
self.host._set_psql_conn_count()
|
|
self.env.cr.commit()
|
|
self.env['runbot.repo']._update_git_config()
|
|
self.env.cr.commit()
|
|
self.git_gc()
|
|
self.env.cr.commit()
|
|
return self.env['runbot.runbot']._scheduler_loop_turn(self.host)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
run(BuilderClient)
|