93 lines
3.3 KiB
Python
93 lines
3.3 KiB
Python
"""
|
|
|
|
"""
|
|
# ------------------------------------------------------- #
|
|
# imports
|
|
# ------------------------------------------------------- #
|
|
import os
|
|
import subprocess
|
|
|
|
from invoke import task
|
|
|
|
from time import time
|
|
|
|
from BBProjectUtils.docker_utils import docker_build as lib_docker_build, docker_deployment as lib_docker_deployment, \
|
|
docker_login_registry
|
|
from BBProjectUtils.file_utils import set_version_nr_in_file
|
|
from BBProjectUtils.git_utils import check_ready_to_release, release_commit
|
|
from BBProjectUtils.standard_tasks import set_venv_name
|
|
|
|
|
|
# ------------------------------------------------------- #
|
|
# definitions
|
|
# ------------------------------------------------------- #
|
|
ARCHIVE_NAME = "SevReqCircle"
|
|
|
|
VIRTUALENV_NAME = f"py311_{ARCHIVE_NAME}"
|
|
DEVELOP_VERSION = "99.99.99"
|
|
|
|
DOCKER_REGISTRY = "gitea.tech-buddy.at/bitbuddydev"
|
|
DOCKER_IMAGE_NAME = "sev_req_circle"
|
|
|
|
set_venv_name(VIRTUALENV_NAME)
|
|
|
|
# ------------------------------------------------------- #
|
|
# global variables
|
|
# ------------------------------------------------------- #
|
|
|
|
|
|
# ------------------------------------------------------- #
|
|
# functions
|
|
# ------------------------------------------------------- #
|
|
|
|
|
|
# ------------------------------------------------------- #
|
|
# classes
|
|
# ------------------------------------------------------- #
|
|
|
|
|
|
# ------------------------------------------------------- #
|
|
# tasks
|
|
# ------------------------------------------------------- #
|
|
@task
|
|
def docker_build(c, tag=""):
|
|
lib_docker_build(c, DOCKER_IMAGE_NAME, tag)
|
|
|
|
|
|
@task
|
|
def docker_deployment(c, tag):
|
|
docker_login_registry(c, registry=DOCKER_REGISTRY, user=os.getenv('REP_USER'),
|
|
pwd=os.getenv('REP_PWD'))
|
|
|
|
lib_docker_deployment(c, DOCKER_IMAGE_NAME, DOCKER_REGISTRY, tag + "-amd64")
|
|
|
|
|
|
@task
|
|
def docker_deploy_raspi(c, tag):
|
|
start_time = time()
|
|
print("START deploying docker image")
|
|
docker_login_registry(c, DOCKER_REGISTRY, os.getenv("REP_USER"), os.getenv("REP_PWD"))
|
|
c.run("docker buildx use bbbuilder")
|
|
c.run("docker buildx build --platform linux/arm64 "
|
|
"-t {registry}/{img_name}{tag} .\\ --load".format(registry=DOCKER_REGISTRY,
|
|
img_name=DOCKER_IMAGE_NAME,
|
|
tag=":" + tag + "-arm64" if tag != "" else ":latest-arm64"))
|
|
|
|
c.run("docker push {registry}/{img_name}:{tag}".format(registry=DOCKER_REGISTRY,
|
|
img_name=DOCKER_IMAGE_NAME,
|
|
tag=tag + "-arm64"))
|
|
print(f"FINISHED deploying docker image in {int((time() - start_time)/60)} minutes")
|
|
return True
|
|
|
|
|
|
@task
|
|
def release(c, version):
|
|
if check_ready_to_release():
|
|
set_version_nr_in_file("src/start_page.py", 'APP_VERSION = "\d+.\d+.\d+"', f'APP_VERSION = "{version}"')
|
|
docker_deployment(c, version)
|
|
docker_deploy_raspi(c, version)
|
|
|
|
if release_commit(version):
|
|
set_version_nr_in_file("src/start_page.py", 'APP_VERSION = "\d+.\d+.\d+"', f'APP_VERSION = "{DEVELOP_VERSION}"')
|
|
subprocess.run('git commit -am "minor set develop version after release"')
|