Add support for filtering based on tags, in addition to branches
This commit is contained in:
parent
94c24a93c2
commit
fb2470615b
7 changed files with 236 additions and 63 deletions
50
tools/migratebranchregex.py
Normal file
50
tools/migratebranchregex.py
Normal file
|
@ -0,0 +1,50 @@
|
|||
import argparse
|
||||
import logging
|
||||
import json
|
||||
|
||||
from app import app
|
||||
from data import model
|
||||
from data.database import RepositoryBuildTrigger, configure
|
||||
|
||||
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)
|
||||
trigger.config = json.dumps(config)
|
||||
trigger.save()
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(level=logging.DEBUG)
|
||||
logging.getLogger('boto').setLevel(logging.CRITICAL)
|
||||
|
||||
run_branchregex_migration()
|
Reference in a new issue