...
1#!/usr/bin/env python3
2"""Waits for ga docker image
3"""
4
5import argparse
6import http.client
7import sys
8import time
9import subprocess
10import fileinput
11
12from lib import ansiterm
13
14
15def check_docker(image: str) -> bool:
16 p = subprocess.run(["docker", "pull", image], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
17 return p.returncode == 0
18
19
20def main(ga_tag: str, release_registry: str, image_name: str) -> int:
21 image = f"{release_registry}/{image_name}:{ga_tag}"
22 print(f"{ansiterm.sgr.bold.fg_cyn}==> Waiting for GA image {image}")
23 print(f" Check Circle CI if you would like to check progress:")
24 print(f" https://app.circleci.com/pipelines/github/emissary-ingress/emissary")
25 print(f" The 'OSS: GA Release' workflow for tag {ga_tag} should create these artifacts.{ansiterm.sgr.reset}")
26
27 docker_found = False
28 while not docker_found:
29 if check_docker(image):
30 print(f"==> {ansiterm.sgr.bold.fg_grn}Image {image} found!{ansiterm.sgr}")
31 docker_found = True
32 else:
33 print(f" {ansiterm.sgr.fg_red}Image {image} not found, sleeping before trying again.{ansiterm.sgr}")
34 time.sleep(30)
35 if not docker_found:
36 return 1
37 return 0
38
39
40if __name__ == '__main__':
41 parser = argparse.ArgumentParser(description='Wait for commit to show up in s3')
42 parser.add_argument('--ga-tag', required=True)
43 parser.add_argument('--release-registry', default="docker.io/datawire")
44 parser.add_argument('--image-name', default="emissary")
45 args = parser.parse_args()
46
47 sys.exit(main(
48 ga_tag=args.ga_tag,
49 release_registry=args.release_registry,
50 image_name=args.image_name,
51 ))
View as plain text