def main(): parser = argparse.ArgumentParser(description='catapult tests runner') parser.add_argument('--image', help='docker tests image', required=True) parser.add_argument('--compiler-configuration', help='path to compiler configuration yaml', required=True) parser.add_argument('--user', help='docker user', required=True) parser.add_argument('--mode', help='test mode', choices=('bench', 'test', 'lint'), required=True) parser.add_argument('--verbosity', help='verbosity level', default='max') parser.add_argument('--dry-run', help='outputs desired commands without running them', action='store_true') args = parser.parse_args() process_manager = ProcessManager(args.dry_run) compose_template_directory = Path(__file__).parent / 'templates' compose_template_filepath = compose_template_directory / 'Run{}.yaml'.format( args.mode.capitalize()) print('processing template from {}'.format(compose_template_filepath)) prepare_replacements = { 'image_name': args.image, 'compiler_configuration': args.compiler_configuration, 'user': args.user, 'verbosity': args.verbosity } prepare_docker_compose_file(compose_template_filepath, prepare_replacements, sys.stdout) if not args.dry_run: with open('docker-compose.yaml', 'wt') as outfile: prepare_docker_compose_file(compose_template_filepath, prepare_replacements, outfile) environment_manager = EnvironmentManager(args.dry_run) environment_manager.set_env_var('COMPOSE_HTTP_TIMEOUT', '200') environment_manager.mkdirs(OUTPUT_DIR / 'logs', exist_ok=True) environment_manager.mkdirs(OUTPUT_DIR / 'workdir', exist_ok=True) if 'test' == args.mode: environment_manager.mkdirs(MONGO_DIR / get_image_label(args.image)) docker_compose_args = create_docker_compose_command(args.mode) if process_manager.dispatch_subprocess(docker_compose_args, handle_error=False): print('tests failed') sys.exit(1) print('tests succeeded')
def main(): parser = argparse.ArgumentParser(description='catapult project build generator') parser.add_argument('--compiler-configuration', help='path to compiler configuration yaml', required=True) parser.add_argument('--build-configuration', help='path to build configuration yaml', required=True) parser.add_argument('--operating-system', help='operating system', required=True) parser.add_argument('--user', help='docker user', required=True) parser.add_argument('--destination-image-label', help='docker destination image label', required=True) parser.add_argument('--dry-run', help='outputs desired commands without runing them', action='store_true') parser.add_argument('--base-image-names-only', help='only output the base image names', action='store_true') args = parser.parse_args() options = OptionsManager(args) if args.base_image_names_only: print(options.build_base_image_name) print(options.prepare_base_image_name) return docker_run = create_docker_run_command(options, args.compiler_configuration, args.build_configuration, args.user) environment_manager = EnvironmentManager(args.dry_run) environment_manager.rmtree(OUTPUT_DIR) environment_manager.mkdirs(BINARIES_DIR) environment_manager.mkdirs(options.ccache_path / 'tmp', exist_ok=True) environment_manager.mkdirs(options.conan_path, exist_ok=True) print('building project') process_manager = ProcessManager(args.dry_run) return_code = process_manager.dispatch_subprocess(docker_run) if return_code: sys.exit(return_code) print('copying files') environment_manager.chdir(OUTPUT_DIR) for folder_name in ['scripts', 'seed', 'resources']: environment_manager.copy_tree_with_symlinks(SRC_DIR / folder_name, folder_name) environment_manager.chdir(SRC_DIR) print('building docker image') container_id = '<dry_run_container_id>' if args.dry_run else None prepare_docker_image(process_manager, container_id, { 'base_image_name': options.prepare_base_image_name, 'destination_image_label': args.destination_image_label, 'build_disposition': options.build_disposition })
def main(): parser = argparse.ArgumentParser( description='download and install catapult dependencies locally') parser.add_argument('--target', help='target dependencies directory', required=True) parser.add_argument('--versions', help='locked versions file', required=True) parser.add_argument('--download', help='download all dependencies', action='store_true') parser.add_argument('--build', help='build all dependencies', action='store_true') parser.add_argument('--use-clang', help='uses clang compiler instead of gcc', action='store_true') parser.add_argument('--dry-run', help='outputs desired commands without running them', action='store_true') parser.add_argument('--force', help='purges any existing files', action='store_true') args = parser.parse_args() versions = load_versions_map(args.versions) environment_manager = EnvironmentManager(args.dry_run) if args.force: environment_manager.rmtree(args.target) target_directory = Path(args.target).absolute() source_directory = Path(args.target) / SOURCE_DIR_NAME environment_manager.mkdirs(source_directory, exist_ok=True) environment_manager.chdir(source_directory) process_manager = ProcessManager(args.dry_run) dependency_repositories = [('google', 'googletest'), ('google', 'benchmark'), ('mongodb', 'mongo-c-driver'), ('mongodb', 'mongo-cxx-driver'), ('zeromq', 'libzmq'), ('zeromq', 'cppzmq'), ('facebook', 'rocksdb')] if args.download: print('[x] downloading all dependencies') downloader = Downloader(versions, process_manager) downloader.download_boost() for repository in dependency_repositories: downloader.download_git_dependency(repository[0], repository[1]) if args.build: print('[x] building all dependencies') builder = Builder(target_directory, versions, process_manager, environment_manager) if args.use_clang: builder.use_clang() builder.build_boost() for repository in dependency_repositories: builder.build_git_dependency(repository[0], repository[1])