# Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You # may not use this file except in compliance with the License. A copy of # the License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. from __future__ import absolute_import import os import subprocess import sys CYAN_COLOR = '\033[36m' END_COLOR = '\033[0m' DLC_AWS_ID = '763104351884' def build_image(framework_version, dockerfile, image_uri, region, cwd='.'): _check_call('python setup.py sdist') if 'dlc' in dockerfile: ecr_login(region, DLC_AWS_ID) dockerfile_location = os.path.join('test', 'container', framework_version, dockerfile) subprocess.check_call( ['docker', 'build', '-t', image_uri, '-f', dockerfile_location, '--build-arg', 'region={}'.format(region), cwd], cwd=cwd) print('created image {}'.format(image_uri)) return image_uri def push_image(ecr_image, region, aws_id): ecr_login(region, aws_id) _check_call('docker push {}'.format(ecr_image)) def ecr_login(region, aws_id): login = _check_call('aws ecr get-login --registry-ids {} '.format(aws_id) + '--no-include-email --region {}'.format(region)) _check_call(login.decode('utf-8').rstrip('\n')) def _check_call(cmd, *popenargs, **kwargs): if isinstance(cmd, str): cmd = cmd.split(" ") _print_cmd(cmd) return subprocess.check_output(cmd, *popenargs, **kwargs) def _print_cmd(cmd): print('executing docker command: {}{}{}'.format(CYAN_COLOR, ' '.join(cmd), END_COLOR)) sys.stdout.flush()