diff --git a/ci-default.yml b/ci-default.yml deleted file mode 100644 index fa632e64fc03..000000000000 --- a/ci-default.yml +++ /dev/null @@ -1,74 +0,0 @@ -deps: - # CLIENT AND SERVER - - name: pmm - branch: v3 - path: sources/pmm/src/github.com/percona/pmm - url: https://github.com/percona/pmm - - # CLIENT - - name: node_exporter - branch: v3 - path: sources/node_exporter/src/github.com/prometheus/node_exporter - url: https://github.com/percona/node_exporter - - - name: mysqld_exporter - branch: main - path: sources/mysqld_exporter/src/github.com/percona/mysqld_exporter - url: https://github.com/percona/mysqld_exporter - - - name: mongodb_exporter - branch: main - path: sources/mongodb_exporter/src/github.com/percona/mongodb_exporter - url: https://github.com/percona/mongodb_exporter - - - name: postgres_exporter - branch: main - path: sources/postgres_exporter/src/github.com/percona/postgres_exporter - url: https://github.com/percona/postgres_exporter - - - name: proxysql_exporter - branch: main - path: sources/proxysql_exporter/src/github.com/percona/proxysql_exporter - url: https://github.com/percona/proxysql_exporter - - - name: rds_exporter - branch: main - path: sources/rds_exporter/src/github.com/percona/rds_exporter - url: https://github.com/percona/rds_exporter - - - name: azure_metrics_exporter - branch: main - path: sources/azure_metrics_exporter/src/github.com/percona/azure_metrics_exporter - url: https://github.com/percona/azure_metrics_exporter - - - name: percona-toolkit - branch: release-v3.5.2 - path: sources/percona-toolkit/src/github.com/percona/percona-toolkit - url: https://github.com/percona/percona-toolkit - - # SERVER - - name: grafana-dashboards - branch: v3 - path: sources/grafana-dashboards - url: https://github.com/percona/grafana-dashboards - - - name: grafana - branch: v3 - path: sources/grafana/src/github.com/grafana/grafana - url: https://github.com/percona/grafana - - - name: pmm-dump - branch: main - path: sources/pmm-dump - url: https://github.com/percona/pmm-dump - - # QA - - name: pmm-qa - branch: v3 - path: sources/pmm-qa/src/github.com/percona/pmm-qa - url: https://github.com/percona/pmm-qa - - - name: pmm-ui-tests - branch: v3 - path: sources/pmm-ui-tests/src/github.com/percona/pmm-ui-tests - url: https://github.com/percona/pmm-ui-tests diff --git a/ci.py b/ci.py index 682ac9f4265b..13c477dec309 100644 --- a/ci.py +++ b/ci.py @@ -17,7 +17,7 @@ logging.basicConfig(stream=sys.stdout, format='[%(levelname)s] %(asctime)s: %(message)s', level=logging.INFO) -YAML_CONFIG = 'ci-default.yml' +YAML_EXPORT_CONFIG = 'gitmodules.yml' YAML_CONFIG_OVERRIDE = 'ci.yml' SUBMODULES_CONFIG = '.gitmodules' GIT_SOURCES_FILE = '.git-sources' @@ -31,6 +31,8 @@ class Builder(): rootdir = check_output(['git', 'rev-parse', '--show-toplevel']).decode('utf-8').strip() def __init__(self): + self.config_source = SUBMODULES_CONFIG + self.config_override = self.read_config_override() self.config = self.read_config() @@ -42,8 +44,17 @@ def read_config_override(self): return yaml.load(f, Loader=yaml.FullLoader) def read_config(self): - with open(YAML_CONFIG, 'r') as f: - return yaml.load(f, Loader=yaml.FullLoader) + config = configparser.ConfigParser() + config.read(self.config_source) + + submodules = [] + for s in config.sections(): + submodules_name = s.split('"')[1] + submodules_info = dict(config.items(s)) + submodules_info['name'] = submodules_name + + submodules.append(submodules_info) + return {'deps': submodules} def write_custom_config(self, config): with open(YAML_CONFIG_OVERRIDE, 'w') as f: @@ -65,6 +76,16 @@ def merge_configs(self): f'Can"t find {override_dep["name"]} repo from ci.yml in the list of repos in ci-default.yml') sys.exit(1) + # To test the merge, run `python ./ci.py --convert` + def export_gitmodules_to_yaml(self, target=YAML_EXPORT_CONFIG): + yaml_config = Path(target) + if yaml_config.is_file(): + logging.warning('File {} already exists!'.format(target)) + sys.exit(1) + with open(target, 'w') as f: + yaml.dump(self.config, f, sort_keys=False) + sys.exit(0) + def get_global_branches(self, target_branch_name): found_branches = {} github_api = Github(GITHUB_TOKEN) @@ -158,7 +179,7 @@ def create_fb_branch(self, branch_name, global_repo=False): f'Pull Request was created: https://github.com/Percona-Lab/pmm-submodules/pull/{pr.number}') else: logging.info( - f'Pull request already exist: https://github.com/Percona-Lab/pmm-submodules/pull/{pr[0].number}') + f'Pull request already exists: https://github.com/Percona-Lab/pmm-submodules/pull/{pr[0].number}') else: logging.info('Branch was created') logging.info( @@ -236,40 +257,10 @@ def validate_config(self): for dep in self.config['deps']: if not os.path.abspath(dep['path']).startswith(os.getcwd()): logging.error(f'For dependency [{dep["name"]} -> {os.path.abspath(dep["path"])}] ' - f'path must be in working directory [{os.getcwd()}]') + f'the path must be located within the working directory [{os.getcwd()}]') sys.exit(1) -class Converter: - def __init__(self, origin=SUBMODULES_CONFIG, target=YAML_CONFIG): - self.origin = origin - self.target = target - self.submodules = self.get_list_of_submodules() - self.convert_gitmodules_to_yaml() - - def get_list_of_submodules(self): - config = configparser.ConfigParser() - config.read(self.origin) - - submodules = [] - for s in config.sections(): - submodules_name = s.split('"')[1] - submodules_info = dict(config.items(s)) - submodules_info['name'] = submodules_name - - submodules.append(submodules_info) - return {'deps': submodules} - - def convert_gitmodules_to_yaml(self): - yaml_config = Path(self.target) - if yaml_config.is_file(): - logging.warning('File {} already exists!'.format(self.target)) - sys.exit(1) - with open(self.target, 'w') as f: - yaml.dump(self.submodules, f, sort_keys=False) - sys.exit(0) - - def switch_branch(path, branch): # 'symbolic-ref' works only if we are on a branch. If we use a commit, we run 'rev-parse' instead. try: @@ -297,16 +288,16 @@ def main(): parser.add_argument('--prepare', help='prepare feature build') parser.add_argument('--global', '-g', dest='global_repo', help='find and use all branches with this name', action='store_true') - parser.add_argument('--convert', help='convert .gitmodules to .git-deps.yml', action='store_true') - parser.add_argument('--get_branch', help='get branch name for repo') + parser.add_argument('--convert', help='convert .gitmodules config to yml', action='store_true') args = parser.parse_args() + builder = Builder() + if args.convert: - Converter() + builder.export_gitmodules_to_yaml() sys.exit(0) - builder = Builder() if args.prepare: builder.create_fb_branch(args.prepare, args.global_repo) sys.exit(0)