Beispiel #1
0
 def get_build_image_name(self, container: str) -> str:
     image_name = generate_image_name(container, self.image_name_template)
     if not self.production:
         image_name += ':latest'
     else:
         with open(container + '/tag') as tag:
             image_name += ':' + tag.read()
     return image_name
Beispiel #2
0
 def container_built_and_pushed(self, container: str) -> bool:
     variables = load_environment_variables(
         ['AZURE_CONTAINER_REGISTRY_NAME'])
     acr_name = variables['AZURE_CONTAINER_REGISTRY_NAME']
     image_name = generate_image_name(container,
                                      self.short_image_name_template)
     with open(container + '/tag') as tag:
         image_name += ':' + tag.read()
     return call([
         'az', 'acr', 'repository', 'show', '--name', acr_name, '--image',
         image_name
     ],
                 stdout=PIPE,
                 stderr=PIPE) == 0
Beispiel #3
0
 def clean_up(self, containers: List[str]=[]):
     untagged_images = []
     for container in containers:
         image_name = generate_image_name(container, self.image_name_template)
         untagged_images.extend (
             check_output(
                 ['docker', 'images', image_name, '-f', 'dangling=true', '-q']
             ).decode('UTF-8').splitlines()
         )
         
     if untagged_images:
         command = ['docker', 'rmi']
         command.extend(untagged_images)
         call(command, stdout=PIPE)
Beispiel #4
0
 def get_deployment_image_name(self, container: str) -> str:
     variables = load_environment_variables(
         ['AZURE_CONTAINER_REGISTRY_NAME'])
     acr_name = variables['AZURE_CONTAINER_REGISTRY_NAME']
     short_image_name = generate_image_name(container,
                                            self.short_image_name_template)
     if not self.production:
         short_image_name += ':latest'
     else:
         with open(container + '/tag') as tag:
             short_image_name += ':' + tag.read()
     digest = check_output([
         'az', 'acr', 'repository', 'show', '--name', acr_name, '--image',
         short_image_name, '--query', 'digest', '--output', 'tsv'
     ]).decode('UTF-8').replace('\n', '')
     return self.get_build_image_name(container) + '@' + digest
Beispiel #5
0
    def build(self, containers=[]):

        @WrapPrint('Starting local registry... ', 'done')
        def start_local_registry():
            call(['docker', 'run', '-d', '-p', '5000:5000', '--name', 'registry', 'registry:2'], stdout=PIPE)
            # Local registry health check
            while call(['curl', '-s', 'http://' + check_output(['minikube', 'ip']).decode('UTF-8').replace('\n', '') + ':5000']):
                sleep(0.1)

        @WrapPrint('Stopping local registry... ', 'done')
        def stop_local_registry():
            call(['docker', 'stop', 'registry'], stdout=PIPE)
            call(['docker', 'rm', 'registry'], stdout=PIPE)

        start_local_registry()
        # Build and push images to local registry
        for container in containers:
            image_name = generate_image_name(container, self.image_name_template)
            call(['docker', 'build', '--force-rm', '--no-cache', '--rm', '--file', container + '/' + self.dockerfile_filename, '-t', image_name, os.getcwd()])
            call(['docker', 'push', image_name])
        stop_local_registry()
Beispiel #6
0
 def _load_image_names(self, containers):
     for container in containers:
         image_name = generate_image_name(container, self.image_name_template) + ':latest'
         os.environ[container.upper() + '_IMAGE_NAME'] = check_output(['docker', 'image', 'inspect', image_name, '-f', '{{index .RepoDigests 0}}']).decode('UTF-8').replace('\n', '')