forked from alt/image-forge
77 lines
2.7 KiB
Python
Executable File
77 lines
2.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import argparse
|
|
import json
|
|
import subprocess
|
|
|
|
vers_path = ".gitea/workflows/k8s_vers.json"
|
|
|
|
def run(args):
|
|
result = subprocess.run(
|
|
args,
|
|
capture_output = True,
|
|
text = True
|
|
)
|
|
if result.stderr is not None:
|
|
print(result.stderr)
|
|
return False
|
|
print(result.stdout)
|
|
return True
|
|
|
|
def parse_args() -> argparse.Namespace:
|
|
parser = argparse.ArgumentParser(
|
|
formatter_class=argparse.ArgumentDefaultsHelpFormatter,
|
|
)
|
|
parser.add_argument(
|
|
"--branch",
|
|
help="used to pick the appropriate VM template to clone",
|
|
choices=["sisyphus", "c10f2", "p10", "p11"],
|
|
)
|
|
parser.add_argument(
|
|
"--other-build-args",
|
|
help="other build arg as a string",
|
|
)
|
|
parser.add_argument(
|
|
"--workspace",
|
|
help="workspace, path to builing script",
|
|
)
|
|
return parser.parse_args()
|
|
|
|
def main() -> None:
|
|
args = parse_args()
|
|
if args.branch is None or args.branch == "":
|
|
raise RuntimeError("Empty branch setting. Check your choise --branch.")
|
|
|
|
data = {}
|
|
with open(f"{args.workspace}/{vers_path}", "r") as f:
|
|
data = json.load(f)
|
|
|
|
i = 0
|
|
for br in data.get("branches"):
|
|
if br.get("name") == args.branch:
|
|
break
|
|
i += 1
|
|
|
|
vers_branch = data.get("branches")[i].get("versions")
|
|
if vers_branch == None :
|
|
raise RuntimeError(f"Unknown branch: {args.branch!r}. In {vers_path} no k8s-versions list.")
|
|
|
|
images_to_rebuild="k8s/kube-apiserver k8s/kube-scheduler k8s/kube-controller-manager k8s/kube-proxy k8s/kubelet k8s/coredns k8s/etcd"
|
|
for ver in vers_branch:
|
|
kube_ver = ver.get("kube-version")
|
|
dns_ver = ver.get("coredns")
|
|
etcd_ver = ver.get("etcd", kube_ver)
|
|
if kube_ver != None and dns_ver != None:
|
|
packs_string=f"-b {args.branch} " + "--package-versions '{\"k8s/kube-apiserver\":" + f"\"{kube_ver}\",\"k8s/kube-scheduler\":\"{kube_ver}\",\"k8s/kube-controller-manager\":\"{kube_ver}\",\"k8s/kube-proxy\":\"{kube_ver}\",\"k8s/kubelet\":\"{kube_ver}\",\"k8s/coredns\":\"{dns_ver}\",\"k8s/etcd\":\"{etcd_ver}\"" + "}'"
|
|
if ver.get("latest") != None and ver.get("latest"):
|
|
packs_string=f"-o k8s --latest {args.branch} "+packs_string
|
|
else:
|
|
packs_string=f"-i {images_to_rebuild} "+packs_string
|
|
|
|
print(f'Run build command: {args.workspace}/build.py {args.other_build_args} {packs_string}')
|
|
subprocess.run(f"{args.workspace}/build.py {args.other_build_args} {packs_string}", shell=True)
|
|
subprocess.run("podman rmi -f --all", shell=True)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|