mirror of
https://github.com/odoo/runbot.git
synced 2025-03-27 13:25:47 +07:00
[IMP] runbot: add an automatic generated message for upgrade exceptions
This commit is contained in:
parent
b25aa52fb9
commit
03732638f3
@ -29,6 +29,13 @@
|
|||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
|
<record model="ir.config_parameter" id="runbot.runbot_upgrade_exception_message">
|
||||||
|
<field name="key">runbot.runbot_upgrade_exception_message</field>
|
||||||
|
<field name="value">Upgrade exception [#{exception.id}]({base_url}/web/#id={exception.id}&view_type=form&model=runbot.upgrade.exception) added\
|
||||||
|
{exception.elements}
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record model="ir.config_parameter" id="runbot.runbot_is_base_regex">
|
<record model="ir.config_parameter" id="runbot.runbot_is_base_regex">
|
||||||
<field name="key">runbot.runbot_is_base_regex</field>
|
<field name="key">runbot.runbot_is_base_regex</field>
|
||||||
<field name="value">^((master)|(saas-)?\d+\.\d+)$</field>
|
<field name="value">^((master)|(saas-)?\d+\.\d+)$</field>
|
||||||
|
@ -20,6 +20,7 @@ class ResConfigSettings(models.TransientModel):
|
|||||||
runbot_update_frequency = fields.Integer('Update frequency (in seconds)')
|
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_template = fields.Char('Postgresql template', help="Postgresql template to use when creating DB's")
|
||||||
runbot_message = fields.Text('Frontend warning message')
|
runbot_message = fields.Text('Frontend warning message')
|
||||||
|
runbot_upgrade_exception_message = fields.Text('Upgrade exception message')
|
||||||
runbot_do_fetch = fields.Boolean('Discover new commits')
|
runbot_do_fetch = fields.Boolean('Discover new commits')
|
||||||
runbot_do_schedule = fields.Boolean('Schedule builds')
|
runbot_do_schedule = fields.Boolean('Schedule builds')
|
||||||
runbot_is_base_regex = fields.Char('Regex is_base')
|
runbot_is_base_regex = fields.Char('Regex is_base')
|
||||||
@ -51,6 +52,7 @@ class ResConfigSettings(models.TransientModel):
|
|||||||
runbot_update_frequency=int(get_param('runbot.runbot_update_frequency', default=10)),
|
runbot_update_frequency=int(get_param('runbot.runbot_update_frequency', default=10)),
|
||||||
runbot_template=get_param('runbot.runbot_db_template'),
|
runbot_template=get_param('runbot.runbot_db_template'),
|
||||||
runbot_message=get_param('runbot.runbot_message', default=''),
|
runbot_message=get_param('runbot.runbot_message', default=''),
|
||||||
|
runbot_upgrade_exception_message=get_param('runbot.runbot_upgrade_exception_message'),
|
||||||
runbot_do_fetch=get_param('runbot.runbot_do_fetch', default=False),
|
runbot_do_fetch=get_param('runbot.runbot_do_fetch', default=False),
|
||||||
runbot_do_schedule=get_param('runbot.runbot_do_schedule', default=False),
|
runbot_do_schedule=get_param('runbot.runbot_do_schedule', default=False),
|
||||||
runbot_is_base_regex=get_param('runbot.runbot_is_base_regex', default='')
|
runbot_is_base_regex=get_param('runbot.runbot_is_base_regex', default='')
|
||||||
@ -70,6 +72,7 @@ class ResConfigSettings(models.TransientModel):
|
|||||||
set_param('runbot.runbot_update_frequency', self.runbot_update_frequency)
|
set_param('runbot.runbot_update_frequency', self.runbot_update_frequency)
|
||||||
set_param('runbot.runbot_db_template', self.runbot_template)
|
set_param('runbot.runbot_db_template', self.runbot_template)
|
||||||
set_param('runbot.runbot_message', self.runbot_message)
|
set_param('runbot.runbot_message', self.runbot_message)
|
||||||
|
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_fetch', self.runbot_do_fetch)
|
||||||
set_param('runbot.runbot_do_schedule', self.runbot_do_schedule)
|
set_param('runbot.runbot_do_schedule', self.runbot_do_schedule)
|
||||||
set_param('runbot.runbot_is_base_regex', self.runbot_is_base_regex)
|
set_param('runbot.runbot_is_base_regex', self.runbot_is_base_regex)
|
||||||
|
@ -12,6 +12,12 @@ class UpgradeExceptions(models.Model):
|
|||||||
bundle_id = fields.Many2one('runbot.bundle', index=True)
|
bundle_id = fields.Many2one('runbot.bundle', index=True)
|
||||||
info = fields.Text('Info')
|
info = fields.Text('Info')
|
||||||
team_id = fields.Many2one('runbot.team', 'Assigned team', index=True)
|
team_id = fields.Many2one('runbot.team', 'Assigned team', index=True)
|
||||||
|
message = fields.Text('Upgrade exception message', compute="_compute_message")
|
||||||
|
|
||||||
|
def _compute_message(self):
|
||||||
|
message_layout = self.env['ir.config_parameter'].sudo().get_param('runbot.runbot_upgrade_exception_message')
|
||||||
|
for exception in self:
|
||||||
|
exception.message = message_layout.format(exception=exception, base_url=exception.get_base_url())
|
||||||
|
|
||||||
def _generate(self):
|
def _generate(self):
|
||||||
exceptions = self.search([])
|
exceptions = self.search([])
|
||||||
@ -36,13 +42,13 @@ class BuildResult(models.Model):
|
|||||||
ir_logs = self.env['ir.logging'].search([('level', 'in', ('ERROR', 'WARNING', 'CRITICAL')), ('type', '=', 'server'), ('build_id', 'in', self.ids)])
|
ir_logs = self.env['ir.logging'].search([('level', 'in', ('ERROR', 'WARNING', 'CRITICAL')), ('type', '=', 'server'), ('build_id', 'in', self.ids)])
|
||||||
|
|
||||||
upgrade_regexes = self.env['runbot.upgrade.regex'].search([])
|
upgrade_regexes = self.env['runbot.upgrade.regex'].search([])
|
||||||
exception = []
|
exception = {}
|
||||||
for log in ir_logs:
|
for log in ir_logs:
|
||||||
for upgrade_regex in upgrade_regexes:
|
for upgrade_regex in upgrade_regexes:
|
||||||
m = re.search(upgrade_regex.regex, log.message)
|
m = re.search(upgrade_regex.regex, log.message)
|
||||||
if m:
|
if m:
|
||||||
exception.append('%s:%s' % (upgrade_regex.prefix, m.groups()[0]))
|
exception['%s:%s' % (upgrade_regex.prefix, m.groups()[0])] = None
|
||||||
|
exception = list(exception)
|
||||||
if exception:
|
if exception:
|
||||||
bundle = False
|
bundle = False
|
||||||
batches = self.top_parent.slot_ids.mapped('batch_id')
|
batches = self.top_parent.slot_ids.mapped('batch_id')
|
||||||
|
@ -2,6 +2,7 @@ odoo.define('runbot.json_field', function (require) {
|
|||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var basic_fields = require('web.basic_fields');
|
var basic_fields = require('web.basic_fields');
|
||||||
|
var relational_fields = require('web.relational_fields');
|
||||||
var registry = require('web.field_registry');
|
var registry = require('web.field_registry');
|
||||||
var field_utils = require('web.field_utils');
|
var field_utils = require('web.field_utils');
|
||||||
var dom = require('web.dom');
|
var dom = require('web.dom');
|
||||||
@ -34,7 +35,26 @@ var FieldJson = basic_fields.FieldChar.extend({
|
|||||||
});
|
});
|
||||||
|
|
||||||
registry.add('jsonb', FieldJson)
|
registry.add('jsonb', FieldJson)
|
||||||
console.log(field_utils);
|
|
||||||
|
|
||||||
|
var FrontendUrl = relational_fields.FieldMany2One.extend({
|
||||||
|
isQuickEditable: false,
|
||||||
|
events: _.extend({'click .external_link': '_stopPropagation'}, relational_fields.FieldMany2One.prototype.events),
|
||||||
|
init() {
|
||||||
|
this._super.apply(this, arguments);
|
||||||
|
const model = this.value.model.split('.').slice(1).join('_')
|
||||||
|
const res_id = this.value.res_id
|
||||||
|
this.route = '/runbot/' + model+ '/' + res_id
|
||||||
|
},
|
||||||
|
_renderReadonly: function () {
|
||||||
|
this._super.apply(this, arguments);
|
||||||
|
this.$el.html('<span>' + this.$el.html() + ' <a href="'+this.route+'" ><i class="external_link fa fa-fw o_button_icon fa-external-link "/></a><span>')
|
||||||
|
},
|
||||||
|
_stopPropagation: function(event) {
|
||||||
|
event.stopPropagation()
|
||||||
|
}
|
||||||
|
});
|
||||||
|
registry.add('frontend_url', FrontendUrl)
|
||||||
|
|
||||||
function stringify(obj) {
|
function stringify(obj) {
|
||||||
return JSON.stringify(obj, null, '\t')
|
return JSON.stringify(obj, null, '\t')
|
||||||
|
@ -25,9 +25,9 @@
|
|||||||
<field name="trigger_ids" widget="many2many_tags"/>
|
<field name="trigger_ids" widget="many2many_tags"/>
|
||||||
<field name="tag_ids" widget="many2many_tags"/>
|
<field name="tag_ids" widget="many2many_tags"/>
|
||||||
<field name="first_seen_date"/>
|
<field name="first_seen_date"/>
|
||||||
<field name="first_seen_build_id"/>
|
<field name="first_seen_build_id" widget="frontend_url"/>
|
||||||
<field name="last_seen_date"/>
|
<field name="last_seen_date"/>
|
||||||
<field name="last_seen_build_id"/>
|
<field name="last_seen_build_id" widget="frontend_url"/>
|
||||||
<field name="test_tags"/>
|
<field name="test_tags"/>
|
||||||
</group>
|
</group>
|
||||||
<notebook>
|
<notebook>
|
||||||
|
@ -70,6 +70,8 @@
|
|||||||
<field name="runbot_logdb_uri" style="width: 100%;"/>
|
<field name="runbot_logdb_uri" style="width: 100%;"/>
|
||||||
<label for="runbot_message" class="col-xs-3 o_light_label" style="width: 60%;"/>
|
<label for="runbot_message" class="col-xs-3 o_light_label" style="width: 60%;"/>
|
||||||
<field name="runbot_message" style="width: 100%;"/>
|
<field name="runbot_message" style="width: 100%;"/>
|
||||||
|
<label for="runbot_upgrade_exception_message" class="col-xs-3 o_light_label" style="width: 60%;"/>
|
||||||
|
<field name="runbot_upgrade_exception_message" style="width: 100%;"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</xpath>
|
</xpath>
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
<field name="model">runbot.upgrade.exception</field>
|
<field name="model">runbot.upgrade.exception</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="Upgrade Exceptions">
|
<tree string="Upgrade Exceptions">
|
||||||
<field name="bundle_id"/>
|
<field name="bundle_id" widget="frontend_url"/>
|
||||||
<field name="elements"/>
|
<field name="elements"/>
|
||||||
<field name="info"/>
|
<field name="info"/>
|
||||||
<field name="create_date"/>
|
<field name="create_date"/>
|
||||||
@ -26,6 +26,30 @@
|
|||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<record id="upgrade_exception_form" model="ir.ui.view">
|
||||||
|
<field name="name">runbot.upgrade.exception</field>
|
||||||
|
<field name="model">runbot.upgrade.exception</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Upgrade Exceptions">
|
||||||
|
<sheet>
|
||||||
|
<group>
|
||||||
|
<field name="active"/>
|
||||||
|
<field name="bundle_id" widget="frontend_url"/>
|
||||||
|
<field name="elements"/>
|
||||||
|
<field name="info"/>
|
||||||
|
<field name="create_date"/>
|
||||||
|
<field name="create_uid"/>
|
||||||
|
<field name="team_id"/>
|
||||||
|
<field name="message"/>
|
||||||
|
</group>
|
||||||
|
</sheet>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<record id="upgrade_regex_tree" model="ir.ui.view">
|
<record id="upgrade_regex_tree" model="ir.ui.view">
|
||||||
<field name="name">runbot.upgrade.regex</field>
|
<field name="name">runbot.upgrade.regex</field>
|
||||||
<field name="model">runbot.upgrade.regex</field>
|
<field name="model">runbot.upgrade.regex</field>
|
||||||
|
Loading…
Reference in New Issue
Block a user