def _get_test_images_for_lang(lang, release_arg, image_path_prefix): """Find docker images for a language across releases and runtimes. Returns dictionary of list of (<tag>, <image-full-path>) keyed by runtime. """ if release_arg == 'all': # Use all defined releases for given language releases = client_matrix.get_release_tags(lang) else: # Look for a particular release. if release_arg not in client_matrix.get_release_tags(lang): jobset.message( 'SKIPPED', 'release %s for %s is not defined' % (release_arg, lang), do_newline=True) return {} releases = [release_arg] # Image tuples keyed by runtime. images = {} for tag in releases: for runtime in client_matrix.get_runtimes_for_lang_release(lang, tag): image_name = '%s/grpc_interop_%s:%s' % (image_path_prefix, runtime, tag) image_tuple = (tag, image_name) if not images.has_key(runtime): images[runtime] = [] images[runtime].append(image_tuple) return images
def _get_test_images_for_lang(lang, release_arg, image_path_prefix): """Find docker images for a language across releases and runtimes. Returns dictionary of list of (<tag>, <image-full-path>) keyed by runtime. """ if release_arg == 'all': # Use all defined releases for given language releases = client_matrix.get_release_tags(lang) else: # Look for a particular release. if release_arg not in client_matrix.get_release_tags(lang): jobset.message('SKIPPED', 'release %s for %s is not defined' % (release_arg, lang), do_newline=True) return {} releases = [release_arg] # Image tuples keyed by runtime. images = {} for tag in releases: for runtime in client_matrix.get_runtimes_for_lang_release(lang, tag): image_name = '%s/grpc_interop_%s:%s' % (image_path_prefix, runtime, tag) image_tuple = (tag, image_name) if not images.has_key(runtime): images[runtime] = [] images[runtime].append(image_tuple) return images
def build_all_images_for_release(lang, release): """Build all docker images for a release across all runtimes.""" docker_images = [] build_jobs = [] env = {} # If we not using current tree or the sibling for grpc stack, do checkout. stack_base = '' if args.git_checkout: stack_base = checkout_grpc_stack(lang, release) var = { 'go': 'GRPC_GO_ROOT', 'java': 'GRPC_JAVA_ROOT', 'node': 'GRPC_NODE_ROOT' }.get(lang, 'GRPC_ROOT') env[var] = stack_base for runtime in client_matrix.get_runtimes_for_lang_release(lang, release): job = build_image_jobspec(runtime, env, release, stack_base) docker_images.append(job.tag) build_jobs.append(job) jobset.message('START', 'Building interop docker images.', do_newline=True) print('Jobs to run: \n%s\n' % '\n'.join(str(j) for j in build_jobs)) num_failures, _ = jobset.run( build_jobs, newline_on_success=True, maxjobs=multiprocessing.cpu_count()) if num_failures: jobset.message( 'FAILED', 'Failed to build interop docker images.', do_newline=True) docker_images_cleanup.extend(docker_images) sys.exit(1) jobset.message( 'SUCCESS', 'All docker images built for %s at %s.' % (lang, release), do_newline=True) if release != 'master': commit_log = os.path.join(stack_base, 'commit_log') if os.path.exists(commit_log): for image in docker_images: add_files_to_image(image, [commit_log], 'release=%s' % release) return docker_images