First working generation (woohoo)

This commit is contained in:
decentral1se 2021-04-02 16:43:43 +02:00
parent cd647f090b
commit f4ab771e2a
Signed by untrusted user who does not match committer: decentral1se
GPG Key ID: 92DAD76BD9567B8A
2 changed files with 63 additions and 24 deletions

View File

@ -52,7 +52,7 @@ def gen_apps_json():
chdir(app_path) chdir(app_path)
output = check_output("git tag --list", shell=True) output = check_output("git tag --list", shell=True)
tags = output.strip().decode("utf-8") tags = output.decode("utf-8").strip().split()
if not tags: if not tags:
continue continue
@ -61,16 +61,21 @@ def gen_apps_json():
apps_json[app] = { apps_json[app] = {
"category": "apps", "category": "apps",
"repository": f"https://git.autonomic.zone/coop-cloud/{app}.git", "repository": f"https://git.autonomic.zone/coop-cloud/{app}.git",
"features": get_app_features(app_path), "features": get_app_features(app_path, tag),
"versions": get_app_versions(app_path), "versions": get_app_versions(app_path, tag),
} }
return apps_json return apps_json
def get_app_features(app_path): def get_app_features(app_path, tag):
print(f"Gathering features for {app_path}, tag: {tag}")
features = {} features = {}
chdir(app_path)
run(f"git checkout {tag}", shell=True)
with open(f"{app_path}/README.md", "r") as handle: with open(f"{app_path}/README.md", "r") as handle:
contents = handle.read() contents = handle.read()
@ -87,37 +92,35 @@ def get_app_features(app_path):
value = match.split(":")[-1].replace("*", "").strip() value = match.split(":")[-1].replace("*", "").strip()
features[title] = value features[title] = value
run(f"git checkout HEAD", shell=True)
return features return features
def get_app_versions(app_path): def get_app_versions(app_path, tag):
print(f"Gathering versions for {app_path}, tag: {tag}")
versions = [] versions = []
chdir(app_path) chdir(app_path)
run(f"git checkout {tag}", shell=True)
tags = check_output(f"git tag --list", shell=True).decode("utf-8").strip().split() services_command = "yq e '.services | keys | .[]' compose*.yml"
services = check_output(services_command, shell=True).decode("utf-8").split()
for tag in tags: for service in services:
run(f"git checkout {tag}", shell=True) images_command = f"yq e '.services.{service}.image' compose*.yml"
images = check_output(images_command, shell=True).decode("utf-8").split()
services_command = "yq e '.services | keys | .[]' compose*.yml" for image in images:
services = check_output(services_command, shell=True).decode("utf-8").split() if image in ("null", "---"):
continue
for service in services: digest_command = f"skopeo inspect docker://{image} | jq '.Digest'"
images_command = f"yq e '.services.{service}.image' compose*.yml" output = check_output(digest_command, shell=True).decode("utf-8")
images = check_output(images_command, shell=True).decode("utf-8").split() digest = output.strip().split(":")[-1][:8]
versions.append({service: {"image": image, "tag": tag, "digest": digest}})
for image in images:
if image in ("null", "---"):
continue
digest_command = f"skopeo inspect docker://{image} | jq '.Digest'"
output = check_output(digest_command, shell=True).decode("utf-8")
digest = output.strip().split(":")[-1][:8]
versions.append(
{service: {"image": image, "tag": tag, "digest": digest}}
)
run(f"git checkout HEAD", shell=True)
return versions return versions

View File

@ -0,0 +1,36 @@
{
"gitea": {
"category": "apps",
"repository": "https://git.autonomic.zone/coop-cloud/gitea.git",
"features": {
"category": "Development",
"status": "❷💛",
"image": {
"image": "gitea/gitea",
"url": "https://hub.docker.com/gitea/gitea",
"rating": "❶💚",
"source": "upstream"
},
"healthcheck": "Yes",
"backups": "No",
"email": "?",
"tests": "❷💛"
},
"versions": [
{
"app": {
"image": "gitea/gitea:1.13.6",
"tag": "1.13.6",
"digest": "1d90f984"
}
},
{
"db": {
"image": "mariadb:10.5",
"tag": "1.13.6",
"digest": "ab7c906b"
}
}
]
}
}