dda-devops-build/src/main/python/ddadevops/devops_docker_build.py

66 lines
3 KiB
Python
Raw Normal View History

2023-02-28 09:32:26 +01:00
from .domain import DockerBuild
from .application import DockerBuildService
2020-04-24 09:49:24 +02:00
from .devops_build import DevopsBuild, create_devops_build_config
2020-04-17 21:57:21 +02:00
def create_devops_docker_build_config(stage,
project_root_path,
module,
dockerhub_user,
dockerhub_password,
build_dir_name='target',
use_package_common_files=True,
build_commons_path=None,
2021-06-11 09:43:07 +02:00
docker_build_commons_dir_name='docker',
docker_publish_tag=None):
2020-04-17 21:57:21 +02:00
ret = create_devops_build_config(
stage, project_root_path, module, build_dir_name)
ret.update({'dockerhub_user': dockerhub_user,
'dockerhub_password': dockerhub_password,
'use_package_common_files': use_package_common_files,
2022-12-30 13:05:15 +00:00
'docker_build_commons_dir_name': docker_build_commons_dir_name,
2021-06-11 09:43:07 +02:00
'build_commons_path': build_commons_path,
'docker_publish_tag': docker_publish_tag, })
2020-04-17 21:57:21 +02:00
return ret
class DevopsDockerBuild(DevopsBuild):
def __init__(self, project, config):
super().__init__(project, config)
self.docker_build = DockerBuild(project, config)
2023-02-28 09:32:26 +01:00
self.docker_build_service = DockerBuildService()
2020-04-17 21:57:21 +02:00
def initialize_build_dir(self):
super().initialize_build_dir()
self.docker_build_service.initialize_build_dir(self.docker_build)
2020-04-17 21:57:21 +02:00
# TODO: use application from here on
2020-04-17 21:57:21 +02:00
def image(self):
run('docker build -t ' + self.name() +
' --file ' + self.build_path() + '/image/Dockerfile '
2022-12-30 13:05:15 +00:00
+ self.build_path() + '/image', shell=True, check=True)
2020-04-17 21:57:21 +02:00
def drun(self):
2021-03-12 13:14:23 +01:00
run('docker run --expose 8080 -it --entrypoint="" ' +
2022-12-30 13:05:15 +00:00
self.name() + ' /bin/bash', shell=True, check=True)
2020-04-17 21:57:21 +02:00
def dockerhub_login(self):
run('docker login --username ' + self.dockerhub_user +
2022-12-30 13:05:15 +00:00
' --password ' + self.dockerhub_password, shell=True, check=True)
2020-04-17 21:57:21 +02:00
def dockerhub_publish(self):
2022-12-30 13:05:15 +00:00
if self.docker_publish_tag is not None:
2021-06-11 09:43:07 +02:00
run('docker tag ' + self.name() + ' ' + self.dockerhub_user +
2022-12-30 13:05:15 +00:00
'/' + self.name() + ':' + self.docker_publish_tag, shell=True, check=True)
2021-06-25 12:44:24 +02:00
run('docker push ' + self.dockerhub_user +
2022-12-30 13:05:15 +00:00
'/' + self.name() + ':' + self.docker_publish_tag, shell=True, check=True)
2021-07-01 21:32:15 +02:00
run('docker tag ' + self.name() + ' ' + self.dockerhub_user +
2022-12-30 13:05:15 +00:00
'/' + self.name() + ':latest', shell=True, check=True)
2020-04-17 21:57:21 +02:00
run('docker push ' + self.dockerhub_user +
2022-12-30 13:05:15 +00:00
'/' + self.name() + ':latest', shell=True, check=True)
2020-04-17 21:57:21 +02:00
def test(self):
run('docker build -t ' + self.name() + '-test ' +
'--file ' + self.build_path() + '/test/Dockerfile '
2022-12-30 13:05:15 +00:00
+ self.build_path() + '/test', shell=True, check=True)