2024-09-01 21:51:50 +01:00

54 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import tempfile
import subprocess
import argparse
BASE_DIR = os.path.abspath(os.path.dirname(__file__) + '/..')
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("action", help="CI action: build, push")
return parser.parse_args()
NAME = subprocess.check_output('git rev-parse --short HEAD', shell=True, encoding='utf-8').strip()
IMG_TAG = "registry.cn-shenzhen.aliyuncs.com/euphon-private/emblem-detection:" + NAME
print(IMG_TAG)
def do_test():
subprocess.check_call("docker run --rm --network=host %s ./tests/run.py" % IMG_TAG, shell=True)
def do_build():
subprocess.check_call("docker build --network=host -t %s ." % IMG_TAG, shell=True)
def do_push():
subprocess.check_call("docker push %s" % IMG_TAG, shell=True)
def do_deploy(env=""):
kubeconfig = os.path.join(BASE_DIR, 'deploy/kubeconfig.' + env)
src = os.path.join(BASE_DIR, 'deploy/detection.yaml')
tf = tempfile.NamedTemporaryFile(mode='w')
with open(src, 'r') as f:
tmpl = f.read()
tf.write(tmpl.format(image=IMG_TAG))
tf.flush()
cmd = ['kubectl', '--kubeconfig', kubeconfig, 'apply', '-f', tf.name]
subprocess.check_call(cmd)
def main():
args = parse_args()
if args.action == "build":
return do_build()
elif args.action == "test":
return do_test()
elif args.action == "push":
return do_push()
elif args.action == "deploy-prod":
return do_deploy('prod')
elif args.action == "deploy-dev":
return do_deploy('dev')
raise Exception("Unrecognized command")
main()