Break-out early if the image already exists (#23)
diff --git a/ci/build-image-strategy b/ci/build-image-strategy
new file mode 100755
index 0000000..495bced
--- /dev/null
+++ b/ci/build-image-strategy
@@ -0,0 +1,52 @@
+#!/usr/bin/env python3
+
+import glob
+import json
+import requests
+import sys
+
+MATRIX = []
+
+RELEASES = sorted([r.split("/")[-1] for r in glob.glob("images/openstack/releases/*")])
+PROJECTS = sorted([r.split("/")[-1] for r in glob.glob("images/openstack/projects/*")])
+
+DATA = {}
+
+if len(sys.argv) > 1 and sys.argv[1] == "all":
+ DATA = {
+ "fail-fast": False,
+ "matrix": {
+ "release": RELEASES,
+ "project": PROJECTS,
+ },
+ }
+else:
+ for release in RELEASES:
+ for project in PROJECTS:
+ ref = (
+ open(f"images/openstack/projects/{project}/{release}/ref", "r")
+ .read()
+ .strip()
+ )
+
+ r = requests.get(
+ f"https://quay.io/api/v1/repository/vexxhost/{project}/tag/?specificTag={ref}"
+ )
+
+ if r.json().get("tags") == []:
+ MATRIX += [
+ {
+ "release": release,
+ "project": project,
+ }
+ ]
+
+ if len(MATRIX) != 0:
+ DATA = {
+ "fail-fast": False,
+ "matrix": {
+ "include": MATRIX,
+ },
+ }
+
+json.dump(DATA, sys.stdout, separators=(",", ":"))