Do a hacky attempt at not rebuilding already-built images

This is such a complete and utter hack, and I should be somewhat
ashamed of myself. *However*, the docker registry API seems to be
a piece of poop, and there seem to be absolutely no client libraries
for it in python :(
pull/2/head
yuvipanda 2017-05-09 20:45:45 -07:00
rodzic 4881ba2088
commit e0f75520db
1 zmienionych plików z 18 dodań i 2 usunięć

Wyświetl plik

@ -67,6 +67,23 @@ class Builder(Application):
self.load_config_file(self.config_file)
def run(self):
# HACK: Try to just pull this and see if that works.
# if it does, then just bail.
# WHAT WE REALLY WANT IS TO NOT DO ANY WORK IF THE IMAGE EXISTS
client = docker.APIClient(base_url='unix://var/run/docker.sock', version='auto')
try:
repo, tag = self.output_image_spec.split(':')
for line in client.pull(
repository=repo,
tag=tag,
stream=True,
):
print(json.loads(line.decode('utf-8')))
return
except docker.errors.ImageNotFound:
pass
output_path = os.path.join(self.git_workdir, self.build_name)
self.fetch(
self.source_url,
@ -82,8 +99,7 @@ class Builder(Application):
raise Exception("No compatible builders found")
client = docker.from_env(version='1.23')
for line in client.images.push(self.output_image_spec, stream=True):
for line in client.push(self.output_image_spec, stream=True):
progress = json.loads(line.decode('utf-8'))
print(progress)