def build_all_images_for_lang(lang): """Build all docker images for a language across releases and runtimes.""" if not args.git_checkout: if args.release != 'master': print( 'Cannot use --release without also enabling --git_checkout.\n') sys.exit(1) releases = [args.release] else: if args.release == 'all': releases = client_matrix.get_release_tags(lang) else: # Build a particular release. if args.release not in ['master' ] + client_matrix.get_release_tags(lang): jobset.message('SKIPPED', '%s for %s is not defined' % (args.release, lang), do_newline=True) return [] releases = [args.release] images = [] for release in releases: images += build_all_images_for_release(lang, release) jobset.message('SUCCESS', 'All docker images built for %s at %s.' % (lang, releases), do_newline=True) 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_lang(lang): """Build all docker images for a language across releases and runtimes.""" if not args.git_checkout: if args.release != 'master': print('WARNING: --release is set but will be ignored\n') releases = ['master'] else: if args.release == 'all': releases = client_matrix.get_release_tags(lang) else: # Build a particular release. if args.release not in ['master'] + client_matrix.get_release_tags( lang): jobset.message( 'SKIPPED', '%s for %s is not defined' % (args.release, lang), do_newline=True) return [] releases = [args.release] images = [] for release in releases: images += build_all_images_for_release(lang, release) jobset.message( 'SUCCESS', 'All docker images built for %s at %s.' % (lang, releases), do_newline=True) 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 find_all_images_for_lang(lang): """Find docker images for a language across releases and runtimes. Returns dictionary of list of (<tag>, <image-full-path>) keyed by runtime. """ # Find all defined releases. if args.release == 'all': releases = ['master'] + client_matrix.get_release_tags(lang) else: # Look for a particular release. if args.release not in ['master' ] + client_matrix.get_release_tags(lang): jobset.message( 'SKIPPED', '%s for %s is not defined' % (args.release, lang), do_newline=True) return {} releases = [args.release] # TODO(jtattermusch): why do we need to query the existing images/tags? # From LANG_RUNTIME_MATRIX and LANG_RELEASE_MATRIX it should be obvious # which tags we want to test - and it should be an error if they are # missing. # Images tuples keyed by runtime. images = {} for runtime in client_matrix.LANG_RUNTIME_MATRIX[lang]: image_path = '%s/grpc_interop_%s' % (args.gcr_path, runtime) output = subprocess.check_output([ 'gcloud', 'beta', 'container', 'images', 'list-tags', '--format=json', image_path ]) docker_image_list = json.loads(output) # All images should have a single tag or no tag. # TODO(adelez): Remove tagless images. tags = [i['tags'][0] for i in docker_image_list if i['tags']] jobset.message( 'START', 'Found images for %s: %s' % (image_path, tags), do_newline=True) skipped = len(docker_image_list) - len(tags) jobset.message( 'SKIPPED', 'Skipped images (no-tag/unknown-tag): %d' % skipped, do_newline=True) # Filter tags based on the releases. images[runtime] = [(tag, '%s:%s' % (image_path, tag)) for tag in tags if tag in releases] return images
def find_all_images_for_lang(lang): """Find docker images for a language across releases and runtimes. Returns dictionary of list of (<tag>, <image-full-path>) keyed by runtime. """ # Find all defined releases. if args.release == 'all': releases = ['master'] + client_matrix.get_release_tags(lang) else: # Look for a particular release. if args.release not in ['master' ] + client_matrix.get_release_tags(lang): jobset.message('SKIPPED', '%s for %s is not defined' % (args.release, lang), do_newline=True) return {} releases = [args.release] # TODO(jtattermusch): why do we need to query the existing images/tags? # From LANG_RUNTIME_MATRIX and LANG_RELEASE_MATRIX it should be obvious # which tags we want to test - and it should be an error if they are # missing. # Images tuples keyed by runtime. images = {} for runtime in client_matrix.LANG_RUNTIME_MATRIX[lang]: image_path = '%s/grpc_interop_%s' % (args.gcr_path, runtime) output = subprocess.check_output([ 'gcloud', 'beta', 'container', 'images', 'list-tags', '--format=json', image_path ]) docker_image_list = json.loads(output) # All images should have a single tag or no tag. # TODO(adelez): Remove tagless images. tags = [i['tags'][0] for i in docker_image_list if i['tags']] jobset.message('START', 'Found images for %s: %s' % (image_path, tags), do_newline=True) skipped = len(docker_image_list) - len(tags) jobset.message('SKIPPED', 'Skipped images (no-tag/unknown-tag): %d' % skipped, do_newline=True) # Filter tags based on the releases. images[runtime] = [(tag, '%s:%s' % (image_path, tag)) for tag in tags if tag in releases] return images