Files
SevReqCircle/tasks.py
2024-03-10 21:26:57 +01:00

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"')