refactor devops_docker_build to arch
This commit is contained in:
parent
d95827e1e0
commit
eec7392470
4 changed files with 64 additions and 60 deletions
src/main/python/ddadevops
|
@ -22,30 +22,31 @@ class DockerBuildService:
|
||||||
def __copy_build_resources_from_dir__(self, build: DockerBuild):
|
def __copy_build_resources_from_dir__(self, build: DockerBuild):
|
||||||
self.file_api.cp_force(build.docker_build_commons_path(), build.build_path())
|
self.file_api.cp_force(build.docker_build_commons_path(), build.build_path())
|
||||||
|
|
||||||
def initialize_build_dir(self, build: DockerBuild):
|
def initialize_build_dir(self, build: Build, docker_build: DockerBuild):
|
||||||
self.file_api.clean_dir(build.build_path() + "/image/resources")
|
build_path = build.build_path()
|
||||||
if build.use_package_common_files:
|
self.file_api.clean_dir(f"{build_path}/image/resources")
|
||||||
self.__copy_build_resources_from_package__(build)
|
if docker_build.use_package_common_files:
|
||||||
|
self.__copy_build_resources_from_package__(docker_build)
|
||||||
else:
|
else:
|
||||||
self.__copy_build_resources_from_dir__(build)
|
self.__copy_build_resources_from_dir__(docker_build)
|
||||||
self.file_api.cp_recursive("image", build.build_path())
|
self.file_api.cp_recursive("image", build_path)
|
||||||
self.file_api.cp_recursive("test", build.build_path())
|
self.file_api.cp_recursive("test", build_path)
|
||||||
|
|
||||||
def image(self, build: DockerBuild):
|
def image(self, build: Build):
|
||||||
self.docker_api.image(build.name(), build.build_path())
|
self.docker_api.image(build.name(), build.build_path())
|
||||||
|
|
||||||
def drun(self, build: DockerBuild):
|
def drun(self, build: DockerBuild):
|
||||||
self.docker_api.drun(build.name())
|
self.docker_api.drun(build.name())
|
||||||
|
|
||||||
def dockerhub_login(self, build: DockerBuild):
|
def dockerhub_login(self, docker_build: DockerBuild):
|
||||||
self.docker_api.dockerhub_login(build.dockerhub_user, build.dockerhub_password)
|
self.docker_api.dockerhub_login(docker_build.dockerhub_user, docker_build.dockerhub_password)
|
||||||
|
|
||||||
def dockerhub_publish(self, build: DockerBuild):
|
def dockerhub_publish(self, build: Build, docker_build: DockerBuild):
|
||||||
self.docker_api.dockerhub_publish(
|
self.docker_api.dockerhub_publish(
|
||||||
build.name(), build.dockerhub_user, build.docker_publish_tag
|
build.name(), docker_build.dockerhub_user, docker_build.docker_publish_tag
|
||||||
)
|
)
|
||||||
|
|
||||||
def test(self, build: DockerBuild):
|
def test(self, build: Build):
|
||||||
self.docker_api.test(build.name(), build.build_path())
|
self.docker_api.test(build.name(), build.build_path())
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,64 +2,63 @@ from .domain import DockerBuild
|
||||||
from .application import DockerBuildService
|
from .application import DockerBuildService
|
||||||
from .devops_build import DevopsBuild, create_devops_build_config
|
from .devops_build import DevopsBuild, create_devops_build_config
|
||||||
|
|
||||||
def create_devops_docker_build_config(stage,
|
|
||||||
project_root_path,
|
def create_devops_docker_build_config(
|
||||||
module,
|
stage,
|
||||||
dockerhub_user,
|
project_root_path,
|
||||||
dockerhub_password,
|
module,
|
||||||
build_dir_name='target',
|
dockerhub_user,
|
||||||
use_package_common_files=True,
|
dockerhub_password,
|
||||||
build_commons_path=None,
|
build_dir_name="target",
|
||||||
docker_build_commons_dir_name='docker',
|
use_package_common_files=True,
|
||||||
docker_publish_tag=None):
|
build_commons_path=None,
|
||||||
ret = create_devops_build_config(
|
docker_build_commons_dir_name="docker",
|
||||||
stage, project_root_path, module, build_dir_name)
|
docker_publish_tag=None,
|
||||||
ret.update({'dockerhub_user': dockerhub_user,
|
):
|
||||||
'dockerhub_password': dockerhub_password,
|
ret = create_devops_build_config(stage, project_root_path, module, build_dir_name)
|
||||||
'use_package_common_files': use_package_common_files,
|
ret.update(
|
||||||
'docker_build_commons_dir_name': docker_build_commons_dir_name,
|
{
|
||||||
'build_commons_path': build_commons_path,
|
"dockerhub_user": dockerhub_user,
|
||||||
'docker_publish_tag': docker_publish_tag, })
|
"dockerhub_password": dockerhub_password,
|
||||||
|
"use_package_common_files": use_package_common_files,
|
||||||
|
"docker_build_commons_dir_name": docker_build_commons_dir_name,
|
||||||
|
"build_commons_path": build_commons_path,
|
||||||
|
"docker_publish_tag": docker_publish_tag,
|
||||||
|
}
|
||||||
|
)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
|
|
||||||
class DevopsDockerBuild(DevopsBuild):
|
class DevopsDockerBuild(DevopsBuild):
|
||||||
|
|
||||||
def __init__(self, project, config):
|
def __init__(self, project, config):
|
||||||
super().__init__(project, config)
|
super().__init__(project, config)
|
||||||
self.docker_build = DockerBuild(project, config)
|
|
||||||
self.docker_build_service = DockerBuildService()
|
self.docker_build_service = DockerBuildService()
|
||||||
|
docker_build = DockerBuild(config)
|
||||||
|
self.repo.set_docker_build(self.project, docker_build)
|
||||||
|
|
||||||
def initialize_build_dir(self):
|
def initialize_build_dir(self):
|
||||||
super().initialize_build_dir()
|
super().initialize_build_dir()
|
||||||
self.docker_build_service.initialize_build_dir(self.docker_build)
|
build = self.repo.get_build(self.project)
|
||||||
|
docker_build = self.repo.get_docker_build(self.project)
|
||||||
|
self.docker_build_service.initialize_build_dir(build, docker_build)
|
||||||
|
|
||||||
# TODO: use application from here on
|
|
||||||
def image(self):
|
def image(self):
|
||||||
run('docker build -t ' + self.name() +
|
build = self.repo.get_build(self.project)
|
||||||
' --file ' + self.build_path() + '/image/Dockerfile '
|
self.docker_build_service.image(build)
|
||||||
+ self.build_path() + '/image', shell=True, check=True)
|
|
||||||
|
|
||||||
def drun(self):
|
def drun(self):
|
||||||
run('docker run --expose 8080 -it --entrypoint="" ' +
|
build = self.repo.get_build(self.project)
|
||||||
self.name() + ' /bin/bash', shell=True, check=True)
|
self.docker_build_service.drun(build)
|
||||||
|
|
||||||
def dockerhub_login(self):
|
def dockerhub_login(self):
|
||||||
run('docker login --username ' + self.dockerhub_user +
|
docker_build = self.repo.get_docker_build(self.project)
|
||||||
' --password ' + self.dockerhub_password, shell=True, check=True)
|
self.docker_build_service.dockerhub_login(docker_build)
|
||||||
|
|
||||||
def dockerhub_publish(self):
|
def dockerhub_publish(self):
|
||||||
if self.docker_publish_tag is not None:
|
build = self.repo.get_build(self.project)
|
||||||
run('docker tag ' + self.name() + ' ' + self.dockerhub_user +
|
docker_build = self.repo.get_docker_build(self.project)
|
||||||
'/' + self.name() + ':' + self.docker_publish_tag, shell=True, check=True)
|
self.docker_build_service.dockerhub_publish(build, docker_build)
|
||||||
run('docker push ' + self.dockerhub_user +
|
|
||||||
'/' + self.name() + ':' + self.docker_publish_tag, shell=True, check=True)
|
|
||||||
run('docker tag ' + self.name() + ' ' + self.dockerhub_user +
|
|
||||||
'/' + self.name() + ':latest', shell=True, check=True)
|
|
||||||
run('docker push ' + self.dockerhub_user +
|
|
||||||
'/' + self.name() + ':latest', shell=True, check=True)
|
|
||||||
|
|
||||||
def test(self):
|
def test(self):
|
||||||
run('docker build -t ' + self.name() + '-test ' +
|
build = self.repo.get_build(self.project)
|
||||||
'--file ' + self.build_path() + '/test/Dockerfile '
|
self.test.dockerhub_publish(build)
|
||||||
+ self.build_path() + '/test', shell=True, check=True)
|
|
||||||
|
|
|
@ -57,9 +57,7 @@ class Build(Validateable):
|
||||||
|
|
||||||
|
|
||||||
class DockerBuild(Validateable):
|
class DockerBuild(Validateable):
|
||||||
def __init__(self, project, config):
|
def __init__(self, config):
|
||||||
project.build_depends_on("dda-python-terraform")
|
|
||||||
self.build = Build(project, config)
|
|
||||||
self.dockerhub_user = config["dockerhub_user"]
|
self.dockerhub_user = config["dockerhub_user"]
|
||||||
self.dockerhub_password = config["dockerhub_password"]
|
self.dockerhub_password = config["dockerhub_password"]
|
||||||
self.use_package_common_files = config["use_package_common_files"]
|
self.use_package_common_files = config["use_package_common_files"]
|
||||||
|
|
|
@ -3,16 +3,22 @@ from sys import stdout
|
||||||
from pkg_resources import resource_string
|
from pkg_resources import resource_string
|
||||||
from os import chmod
|
from os import chmod
|
||||||
import yaml
|
import yaml
|
||||||
from .domain import Build
|
from .domain import Build, DockerBuild
|
||||||
from .python_util import execute
|
from .python_util import execute
|
||||||
|
|
||||||
|
|
||||||
class ProjectRepository:
|
class ProjectRepository:
|
||||||
def get_build(self, project) -> Build:
|
def get_build(self, project) -> Build:
|
||||||
return project.get_property("devops_build")
|
return project.get_property("build")
|
||||||
|
|
||||||
def set_build(self, project, build: Build):
|
def set_build(self, project, build: Build):
|
||||||
project.set_property("devops_build", build)
|
project.set_property("build", build)
|
||||||
|
|
||||||
|
def get_docker_build(self, project) -> DockerBuild:
|
||||||
|
return project.get_property("docker_build")
|
||||||
|
|
||||||
|
def set_docker_build(self, project, build: DockerBuild):
|
||||||
|
project.set_property("docker_build", build)
|
||||||
|
|
||||||
|
|
||||||
class ResourceApi:
|
class ResourceApi:
|
||||||
|
|
Loading…
Add table
Reference in a new issue