51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
|
import argparse
|
||
|
import logging
|
||
|
import json
|
||
|
|
||
|
from app import app
|
||
|
from data import model
|
||
|
from data.database import RepositoryBuildTrigger, configure
|
||
|
from data.model.build import update_build_trigger
|
||
|
|
||
|
configure(app.config)
|
||
|
|
||
|
logger = logging.getLogger(__name__)
|
||
|
|
||
|
def run_branchregex_migration():
|
||
|
encountered = set()
|
||
|
while True:
|
||
|
found = list(RepositoryBuildTrigger.select().where(RepositoryBuildTrigger.config ** "%branch_regex%",
|
||
|
~(RepositoryBuildTrigger.config ** "%branchtag_regex%")))
|
||
|
found = [f for f in found if not f.uuid in encountered]
|
||
|
|
||
|
if not found:
|
||
|
logger.debug('No additional records found')
|
||
|
return
|
||
|
|
||
|
logger.debug('Found %s records to be changed', len(found))
|
||
|
for trigger in found:
|
||
|
encountered.add(trigger.uuid)
|
||
|
|
||
|
try:
|
||
|
config = json.loads(trigger.config)
|
||
|
except:
|
||
|
logging.error("Cannot parse config for trigger %s", trigger.uuid)
|
||
|
continue
|
||
|
|
||
|
logger.debug("Checking trigger %s", trigger.uuid)
|
||
|
existing_regex = config['branch_regex']
|
||
|
logger.debug("Found branch regex '%s'", existing_regex)
|
||
|
|
||
|
sub_regex = existing_regex.split('|')
|
||
|
new_regex = '|'.join(['heads/' + sub for sub in sub_regex])
|
||
|
config['branchtag_regex'] = new_regex
|
||
|
|
||
|
logger.debug("Updating to branchtag regex '%s'", new_regex)
|
||
|
update_build_trigger(trigger, config)
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
logging.basicConfig(level=logging.DEBUG)
|
||
|
logging.getLogger('boto').setLevel(logging.CRITICAL)
|
||
|
|
||
|
run_branchregex_migration()
|